REST API

smallcherry's techlog·2022년 8월 18일
0
post-custom-banner

REST API 설계 시 주안점

  1. URI는 정보의 자원을 표현 해야 한다.
  2. 자원에 대한 행위는 uri에 드러내지 않고, HTTP Method (GET, POST, PUT, DELETE)로 표현한다.

RESTful Style

  1. 소문자만 사용한다.

    Bad

    http://restapi.example.com/users/postComments

    Good

    http://restapi.example.com/users/post-comments
  2. 언더스코어_ 대신 하이픈-을 사용한다.

    Bad

    http://restapi.example.com/users/post_comments

    Good

    http://restapi.example.com/users/post-comments
  3. 마지막에 슬래시/를 포함하지 않는다.

    Bad

    http://restapi.example.com/users/

    Good

    http://restapi.example.com/users
  4. 행위는 포함하지 않고, HTTP Method로 나타낸다.

    Bad

    [POST] http://restapi.example.com/users/1/delete-post/1

    Good

    [DELETE] http://restapi.example.com/users/1/posts/1
  5. 파일 확장자는 URI에 포함하지 않는다.

    Bad

    http://restapi.example.com/users/photo.jpg

    Good

    GET http://restapi.example.com/users/photo
    
    HTTP/1.1 Host: restapi.example.com Accept: image/jpg
  6. 가급적 전달하고자 하는 자원의 명사를 사용하되, 컨트롤 리소스(자원을 컨트롤하기 위한 리소스)을 의미하는 경우 예외적으로 동사를 허용한다.

    Bad

    http://restapi.example.com/posts/duplicating

    Good

    http://restapi.example.com/posts/duplicate

RESTful API 리소스 형식 종류

Document

  • 데이터베이스의 레코드와 같은 형태. 컬렉션에 있는 구체적인 멤버 지칭
  • 단수 명사를 사용한다. 1, 2, 3, item
  • http://api.com/items/1

Collection

  • Document의 디렉터리 리소스, Document를 모아놓은 집합으로 데이터베이스의 스키마에 해당한다.
  • 복수 명사를 사용한다. items, names, files
  • http://api.com/items

Store

  • 클라이언트가 특별히 관리하는 형태를 가지는 것
  • 복수 명사를 사용한다. items, names, files
  • http://api.com/user-management/users/{userId}/accounts

Controller

  • CRUD를 제외한 특정 기능 요구. 컨트롤러 리소스는 절차적인 개념으로, uri 마지막에 동사를 사용하여 나타냄
  • 동사 혹은 동사구를 사용한다. exist, done, register
  • http://api.com/items/1/register

리소스 간 관계 표현

서브 리소스 표현

  • items/1/memos → item1이 가지고 있는 메모 조회

서브 리소스 간 관계 명시

  • users/1/like/users → 사용자 1이 좋아하는 사용자 조회
  • 컨트롤 리소스에는 예외적으로 동사를 사용하기도 한다. - 잘 사용하지는 않음-

❤ Reference

https://devuna.tistory.com/79

https://m.blog.naver.com/whdgml1996/221706090913

profile
Java Developer
post-custom-banner

0개의 댓글