리소스 명사는 복수형으로URL에 kebab-case 사용, parameter에 camelCase 사용리소스 URL에 동사 금지단, CRUD 작업이 아닌 경우에는 동사 사용 가능리소스 리스트에는 리소스 갯수 포함PUT vs. PATCHNested resource다수의 리소스 생성/수정/삭제Reference
리소스 명사는 복수형으로
# Good /language-tests # Bad /language-test
URL에 kebab-case 사용, parameter에 camelCase 사용
# Good /language-tests /language-tests/{testId} # Bad /language_tests/{test-id} /languageTests/{test_id}
리소스 URL에 동사 금지
# Good POST /language-tests # Bad POST /language-tests/create
단, CRUD 작업이 아닌 경우에는 동사 사용 가능
POST /language-tests/123/revalidate
리소스 리스트에는 리소스 갯수 포함
GET /language-tests # Response { languageTests: [ ... ], total: 42 }
PUT vs. PATCH
둘의 역할은 모두 업데이트로 같지만, PATCH는 제공된 필드만 업데이트하고 나머지는 그대로 유지합니다.
Nested resource
GET /posts/2/comments DELETE /posts/2/comments/3
위와 같이 중첩된 리소스를 표현할 수 있습니다.
이때, 리소스를 nested로 표현할지, flat하게 표현할지 고민이 될 수 있습니다.
# Nested GET /posts/2/comments/3 # Flat GET /comments/3
각 방법마다 trade-off가 존재하겠지만, 어떤 방법을 선택할지 고민이 된다면 대부분 flat 한것이 nested보다 낫다는 것을 기억해야합니다.