본문 바로가기

Computer Science/Project #2

REST API 설계

REST

REpresentational Safe Transfer


(공부 및 요약 중) 






3 요소 

Resource, Method, Message




HTTP 메서드(CRUD)


메서드

의미

Idempotent

POST

Create

No

GET

Select

Yes

PUT

Update

Yes

DELETE

Delete

Yes







REST의 리소스

- 모든 것을 리소스, 즉 명사로 표현한다.

- 각 세부 리소스에 id를 붙인다.

- 모든 명령을 이런 형태로 정의할 수는 없지만, 되도록이면 리소스 기반의 명사 형태로 정의하는 것이 REST형태의 디자인이 된다.


ex) "Push 메시지를 보낸다"

 - /web/sendpush

 - /web/push (POST)




REST의 특성 

- 유니폼 인터페이스 




REST API 디자인 가이드 

- URL은 HTTP METHOD에 의해 CRUD의 대상이 되는 개체(명사, 정보)이다.

- 행동은 HTTP METHOD(CRUD)에 의해 나타나야 한다. 



에러처리 


그렇지만, 내부 개발중이거나 디버깅 시에는 매우 유용한데, API 서비스를 개발시, 서버의 모드를 production과 dev 모드로 분리해서, 옵션에 따라 dev 모드등으로 기동시, REST API의 에러 응답 메세지에 에러 스택 정보를 포함해서 리턴하도록 하면, 디버깅에 매우 유용하게 사용할 수 있다.



단일 API 엔드포인트 활용

API 서버가 물리적으로 분리된 여러개의 서버에서 동작하고 있을때, user.apiserver.com, car.apiserver.com과 같이 API 서비스마다 URL이 분리되어 있으면 개발자가 사용하기 불편하다. 매번 다른 서버로 연결을 해야하거니와 중간에 방화벽이라도 있으면, 일일이 방화벽을 해제해야 한다.

API 서비스는 물리적으로 서버가 분리되어 있더라도 단일 URL을 사용하는 것이 좋은데, 방법은 HAProxy나 nginx와 같은 reverse proxy를 사용하는 방법이 있다. HAProxy를 앞에 새우고 api.apiserver.com이라는 단일 URL을 구축한후에

HAProxy 설정에서

  • api.apiserver.com/user는 user.apiserver.com 로 라우팅하게 하고
  • api.apiserver.com/car 는 car.apiserver.com으로 라우팅 하도록 구현하면 된다.



참조 : 

'조대협님 블로그 - REST API 이해와 설계'

http://bcho.tistory.com/953

http://bcho.tistory.com/954

http://bcho.tistory.com/955


'Computer Science > Project #2' 카테고리의 다른 글

Cloud9 Project Github에 올리기  (0) 2016.03.20