요구사항을 받으면 -> API URI설계
위와 같은 api는 좋은 예시가 아님 리소스와 행위를 분리하는 것이 좋다.
( 리소스 : 회원 / 행위 : 조회,등록,수정, 삭제 )
[ 리소스 식별, URI 계층 구조 활용한 예시 ]
모두 URL은 동일하지만 하는 행위를 다르게 하면 다른 기능을 수행한다.
클라이언트가 서버에 뭔가 요청을 할 때 기대하는 행동
GET
: 리소스 조회POST
: 요청 데이터 처리, 주로 등록에 사용PUT
: 리소스 대체, 없으면 생성PATCH
: 리소스 부분 변경DELETE
: 리소스 삭제HEAD
: GET과 동일한데 Meta 정보만을 요청 ( body제외 )OPTIONS
: 요청한 URI 에 어떤 메소드가 가능한지 질문. 주로 CORS에서 사용주로 데이터의 CRUD 를 위해 사용하며,
Create(생성) 에는POST
메소드를,
Read(읽기) 에는GET
메소드를,
Update(수정) 에는PUT
메소드를,
Delete(삭제) 에는DELETE
메소드를 이용합니다.
호출해도 리소스를 변경하지 않는다.
한 번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다.
GET : 몇번 조회해도 최종 결과는 똑같다.
PUT : 같은 데이터를 몇번 대체해도 최종 결과는 똑같다.
DELETE : 여러번 삭제해도 이미 그 데이터는 삭제됬다. 최종 결과는 똑같다.
멱등이 아닌것 : POST ( 결제를 두번 호출하면 안됨 )
재요청 중간에 다른곳에서 리소스를 변경해버리면 멱등이아닌가?
사용자1 : GET -> userAge:20
사용자2 : PUT => userAge:30
사용자3 : GET -> userAge:30 -> 바뀐데이터
-> 멱등은 외부 요인으로 중간에 리소스가 변경되는것까지는 고려하지않는다.