RESTful API 에서 메소드(행위)별 동작은 다음과 같다.
메소드 | 동작 |
---|---|
GET | 조회 |
POST | 생성 |
PUT , PATCH | 수정 |
DELETE | 삭제 |
GET
아닌가?🤔 왜 Sendgrid 에서는 이메일 검증을
POST
로 했을까?
GET
이 가진 위험성브라우저별 URL 길이 제한은 다음과 같다.
통상 2,083자로 알고있으면 되겠다. (모든 브라우저를 지원하고자 하는 서비스라면)
Browser | URL Length |
---|---|
Internet Explorer | 2,083 |
Microsoft Edge | 2,083 |
Google Chrome | 32,779 |
Google Android | 8,192 |
Mozilla Firefox | 64,000 |
Apple Safari | 64,000 |
GET 은 ASCII
Character 만 허용된다.
POST 는 Binary data 도 받을 수 있다.
GET
요청은 브라우저단에서 캐싱이 일어난다.
다음 두 URL 을 보자. 과연 캐싱이 될까?
/validations?email=falcon@velog.com&name=falcon
/validations?name=falcon&email=falcon@velog.com
전달되야할 키값은 동일하나
⚠️ 캐싱이 일어나지 않는다.
HTTP 는 query parameter 의미에 대해 인식하지 않고, URI 전체를 통으로 인식하기 때문이다.
등등은 모두 URI 가 동일할 때 의미가 있다.
The
POST
method requests that the target resource process the representation enclosed in the request according to the resource's own specific semantics.
- RFC 7231
브라우저별로 다른 캐싱정책, URL 길이, 한글 깨짐 등의 이슈를 피하기 위해
GET
이 아닌POST
를 사용할 수 있다.
POST
라고해서 무조건 리소스 생성시에만 써야한다는 것은 아니다.