wasup

HTTP) HTTP 메서드, HTTP API, HTTP 메서드 - GET, POST, PUT, PATCH, DELETE, HTTP 메서드의 속성 본문

IT etc

HTTP) HTTP 메서드, HTTP API, HTTP 메서드 - GET, POST, PUT, PATCH, DELETE, HTTP 메서드의 속성

wasupup 2021. 8. 13. 12:55
반응형

HTTP 메서드

-HTTP API

-HTTP메서드


HTTP API

요구사항 URI설계 더 좋은 URI설계 구분하는 방법
회원 목록 조회 /read-member-list /members ???????????????????
회원 조회 /read-member-by-id /members/{id}
회원 등록 /create-member /members/{id}
회원 수정 /update-member /members/{id}
회원 삭제 /delete-member /members/{id}

* URI설계의 기준 - 리소스 식별 (리소스 - 사용될 수 있는 어떤 중심 항목)

* 계층 구조상 상위를 컬렉션으로 보고 복수단어 사용을 권장한다.

* 리소스와 행위를 분리해야 한다

- 여기서 리소스는 회원, 행위는 동사이다.

- 행위를 구분하기 위해 HTTP메서드를 사용하게 된다.


HTTP 메서드 - GET, POST, PUT, PATCH, DELETE

: GET - 리소스 조회

: POST - 요청 데이터 처리, 주로 등록에 사용됨.

: PUT - 리소스 대체, 없다면 생성

: PATCH - 리소스 부분 변경

: DELETE - 리소스 삭제

: HEAD - GET과 동일하지만 메시지 부분 제외, 상태 줄과 헤더만 반환함

: OPTIONS - 대상 리소스에 대한 통신 옵션을 설명( 주로 CORS-Cross-Origin Resource Sharing에서 사용 )

: TRACE - 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트 수행

요구사항 URI설계 더 좋은 URI설계 구분하는 방법
회원 목록 조회 /read-member-list /members GET
회원 조회 /read-member-by-id /members/{id} GET
회원 등록 /create-member /members/{id} POST
회원 수정 /update-member /members/{id} PATCH, PUT, POST
회원 삭제 /delete-member /members/{id} DELETE

GET

: 리소스 조회

: GET /search?q=hello&he=ko HTTP/1.1 HOST:www.google.com

: 메시지 바디를 사용해서 전달 할 수 있지만 지원하는곳이 별로 없음.

POST

: 요청 데이터를 처리 - 메시지 바디를 통해 서버로 요청 데이터를 전달함.

: 서버는 요청 데이터를 처리 - 신규 리소스 등록에 많이 사용됨.

: 단순히 데이터를 생성, 변경하는것 이상으로 프로세스(상태)를 처리해야 하는 경우 사용됨.

PUT

: 덮어버린다는 뜻으로 리소스가 있으면 "완전히"대체 없으면 생성한다.

: 클라이언트가 리소스의 정확한 위치를 알고 URI지정해야한다. - post와의 차이점.

PATCH

: 리소스 부분 변경 

: 지원하지 않는 서버도 있기때문에 그런 경우 POST를 쓰면 된다.

DELETE

: 리소스 제거


HTTP 메서드의 속성

Safe Methods - 안전

: 호출해도 리소스를 변경하지 않는 것 - GET, HEAD, OPTIONS, TRACE

Idempotent Method - 멱등

: 호출을 몇 번을 하든 결과가 똑같은 것 - GET, PUT, DELETE

: 자동 복구 메커니즘에 사용된다 - 서버가 타임아웃등으로 정상 응답을 할 수 없을 때

* 외부 요인으로 중간에 리소스가 변경되는 것은 고려하지 않음

Cacheable Methods - 캐시가능

: GET, HEAD, POST, PATCH가 캐시 가능하지만 실제로 GET, HEAD정도만 캐시로 사용한다.

-> POST, PATCH는 본문 내용까지 캐시 키로 고려해야하는데 구현이 쉽지 않기때문!


[출처]

 

강의 : 

https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

참고 링크 : 

https://www.zerocho.com/category/HTTP/post/5b4c4e3efc5052001b4f519b

 

반응형
Comments