TIL

스파르타 내배캠 Spring 53일차

dzzzdee 2022. 12. 22. 20:57

REST api

api란?

 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

 인터페이스(interface)는 컴퓨터 시스템끼리 정보를 교환하는 공유 경계를 의미한다.

 

rest api란?

  • representational state transfer

 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미 즉 자원(resource)의

표현(representation)에 의한 상태 전달

 Rest는 기본적으로 웹의 기존 기술과 HTTP프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는

아키텍처 스타일이다.

  • HTTP URI을 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

 

REST의 특징

  • 인터페이스 일관성
  • 무상태
  • 캐시 처리 가능
  • 계층화
  • 자체 표현구조
  • 클라이언트/서버 구조

 

REST api 구성요소

자원(RESOURCE) URI를 통해 정보의 자원을 명시하고 구분할 수 있어야 한다.

[BAD]

  • 회원 목록 조회: /read-member-list
  • 회원 조회: /read-member-by-id
  • 회원 등록: /create-member
  • 회원 수정: /update-member
  • 회원 삭제: /delete-member

[GOOD]

  • 회원 목록 조회: /members
  • 회원 조회: /members/{id}
  • 회원 등록: /members/{id}
  • 회원 수정: /members/{id}
  • 회원 삭제: /members/{id}
  • 회원 목록 조회: GET
  • 회원 조회: GET
  • 회원 등록: POST
  • 회원 수정: PUT
  • 회원 삭제: DELETE

 

api Rules

단수보다는 복수를 사용

GET      /users
POST   /users
GET     / users/1

url은 명사위주 작성

[BAD]
GET      /getUsers
POST   /createUser
GET     /getUser
[GOOD]
GET     / users
POST  /users
GET    / users/1

마지막에  / 포함하지 않음

[GOOD]
http://example.com/posts 
[BAD]
http://example.com/posts/ 

_(underbar) 대신 -(dash)를 사용한다.

[GOOD]
http://example.com/cancel-orders
[BAD]
http://example.com/cancel_orders 

소문자를 사용한다.

[GOOD]
http://example.com/cancel-orders
[BAD]
http://example.com/cancelOrders

행위(method)는 URL에 포함하지 않는다.

[GOOD]
DELETE http://example.com/posts/1
[BAD]
POST http://example.com/create-posts

컨트롤 자원을 의미하는 URL 예외적으로 동사를 허용한다.

[GOOD]
http://example.com/id/duplicate
[BAD]
http://example.com/id/duplicating

컬렉션 필터링 -> 쿼리 파라미터

[GOOD]
http://example.com/users?region=ko
http://example.com/users?gender=male
http://example.com/users?region=ko&gender=male
[BAD]
http://example.com/users/region/ko
http://example.com/users/gender/male
http://example.com/users/region/ko/gender/male


REST api에 대한 특강이 있었다.

들어보니 지난 개인프로젝트를 나름 REST하게 했던거 같기..ㄷ...하고

앞으로 참고하여 api를 구성해보겠다