ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • REST API 디자인 가이드
    jabsiri...... 2016. 3. 15. 14:34

    REST API 디자인 가이드

    1. 심플하고 직관적으로 만들자
       + 2 depth 정도로 간단하게 만드는 것이 이해하기 편함
         - /docs
         - /docs/123
       + 동사 보다는 명사를 사용
         - 단수형 명사(/dog) 보다 복수형 명사(/dogs)를 사용하는 것이 의미상 좋음
       + 사용 예
      
      리소스 POST GET PUT DELETE
      create read update delete
      /dogs 새로운 dogs 등록 dogs 목록을 리턴 Bulk로 여러 dogs 정보를 업데이트 모든 dogs 정보를 삭제
      /dogs/baduk 에러 baduk 이라는 이름의 dogs 정보를 리턴 baduk이라는 이름의 dogs 정보를 업데이트 baduk 이라는 이름의 dogs 정보를 삭제
    2. 리소스간의 관계를 표한하는 방법
         - 서브 리소스로 표현하는 방법
           + /”리소스명”/”리소스 id”/”관계가 있는 다른 리소스명” 형태
           + HTTP Get : /users/{userid}/devices
           예) /users/terry/devices
         - 서브 리소스에 관계를 명시하는 방법
           + HTTP Get : /users/{userid}/likes/devices
           예) /users/terry/likes/devices
      
    3. 에러처리
           - 200 성공
           - 400 Bad Request - field validation 실패시
           - 401 Unauthorized - API 인증,인가 실패
           - 404 Not found - 해당 리소스가 없음
           - 500 Internal Server Error - 서버 에러
           - 예시
             + HTTP Status Code : 401
             {“status”:”401”,”message”:”Authenticate”,”code”:200003,”more info”:”http://www.twillo.com/docs/errors/20003"}
      
    4. API 버젼관리
           - Facebook?v=2.0
           - salesforce.com /services/data/v20.0/sobjects/Account
           - {servicename}/{version}/{REST URL}
           예) api.server.com/account/v2.0/groups
      
    5. 페이징
           - Facebook API 스타일 : /record?offset=100&limit=25
           - Twitter API 스타일 : /record?page=5&rpp=25 (RPP는 Record per page로 페이지당 레코드수로 RPP=25이면 페이지 5는 100~125 레코드가 된다.)
           - LikedIn API 스타일 : /record?start=50&count=25
           - 구현 관점에서 보면 , 페이스북 API가 조금 더 직관적이기 때문에, 페이스북 스타일을 사용하는 것을 권장한다.
         예) record?offset=100&limit=25 : 100번째 레코드에서부터 25개의 레코드를 출력한다.
      
    6. Partial Response 처리
           특정 플드만 전달하는 경우 사용
           - Linked in : /people:(id,first-name,last-name,industry)
           - Facebook : /terry/friends?fields=id,name
           - Google : ?fields=title,media:group(media:thumnail)
      
    7. 검색
       일반적으로 Query String 만 사용하게 되면 페이징 조건과 분간이 안감
        - 예시
          + /users?name=cho&region=seoul&offset=20&limit=10
        - 추천 방안
          + /user?q=name%3Dcho,region%3Dseoul&offset=20&limit=10
      

    출처 : 조대협의 블로그

    MD 파일 : 

    REST_API디자인_가이드.md



    'jabsiri......' 카테고리의 다른 글

    [단상]객체지향의 사실과 오해를 읽고...  (0) 2016.07.26
    Hibernate....  (1) 2015.09.10
    VO와 DTO  (2) 2015.09.10
Designed by Tistory.