전반적인 HTTP의 흐름에 대해서 정리해볼거다
#클라이언트와 서버는 HTTP를 이용해 대화를 나눈다.
#브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 나타낸다
URL은 sheme, hosts, URL-path로 구분된다.
file://127.0.0.1/Users/username/Desktop/ 있다고 하자
scheme은 file://
hosts는 127.0.0.1
Url-path는 /Users/username/Desktop/ 이다
scheme:통신방식(프로토콜)을 결정한다
hosts: 웹서버의 이름이나 도메인, IP를 사용하며 주소를 나타낸다.
URL-path: 웹서버에서 지정한 루트 디렉토리부터 시작하여 웹페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다.
#URI
http://www.google.com:80/search?q=JavaScript
sheme: http://
hosts: www.google.com:80
url-path: /search
query: ?q=JavaScript
query는 웹서버에 보내는 추가 질문이다.(가장많이쓰는거 paging)
*paging: ?page=1&per_page=30
*filtering: ?status=open
*sorting: ?direction=desc(역순)
*searching: ?q=javascript
URI는 URL을 포함하는 상위개념이다.
#IP주소: 특정 PC의 주소
Port: IP주소에 진입하는 통로(채널) (22,80,443기억하기)
#클라이언트가 HTTP message양식에 맞춰 request하면 서버도 response한다.
HTTP message request => start line + headers + body
HTTP message response => status line + headers + body
#웹어플리케이션에서는 HTTP메서드(get, post, delete, put, patch)를 이용해 서버와 통신한다.
클라이언트와 서버사이에 오가는건 데이터, 리소스(자원)이다.
REST API: HTTP프로토콜을 통해 요청과응답을 정의하는방식
REST API는 HTTP API로 표현한다.
#REST 성숙도 모델 -0단계
-단순히 HTTP프로토콜을 사용하기만
-REST API를 작성하기 위한 기본단계.
#REST 성숙도 모델 -1단계
-모든 자원은 개별 리소스에 맞는 엔드포인트를 사용해야 하며
요청하고 받는 자원에 대한 정보를 응답으로 전달해야한다
-요청하는 리소스가 무엇인지에 따라 각기 다른 엔드포인트로 구분하여 사용!!!
-엔드포인트는 명사형태의 단어!
-응답시 리소스 사용에 대한 성공/실패 여부를 반환해야한다.
#REST 성숙도 모델 -2단계
-CRUD에 맞게 적절한 HTTP메서드를 사용해라
create(추가) - post: 새로운 리소스를 생성.
read(조회)-get :서버의 데이터를 변화시키지 않는 요청에 사용해야함.(멱등성있다)
update(갱신)-put : 요청마다 같은 리소스를 반환. 교체의 용도.(전체수정)(멱등성이있다)
-patch: 수정의 용도(일부분수정)(멱등성이없다)
delete(삭제)-delete
#HTTP요청을 테스트할수있는 API테스트 도구 중 하나가 postman이다.
#전체 유저정보를 조회
get /users
성공 200 실패 400,404
#개별 유저정보를 조회
get /users/kimcoding
성공 200 실패 400,404
#개별 유저정보 추가
post /users
성공: 201 실패400,409
#개별유저정보 갱신
put, patch /users/kimcoding
patch 성공200 204 실패400,404
put 성공201실패400,404
#개별 유저정보 삭제
delete /users/1
성공204 200 실패400,404
'개인공부 > TIL' 카테고리의 다른 글
[에러] useNavigate() may be used only in the context of a <Router> component. (0) | 2023.08.06 |
---|---|
2월9일 (0) | 2023.02.10 |
1월20일 TIL (0) | 2023.01.21 |