[CS] REST API Day-29

cptkuk91·2021년 11월 19일
0

CS

목록 보기
54/139

REST API?

Representational State Transfer의 약자로 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고 HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식입니다.

웹 애플리케이션은 HTTP 메소드를 이용해 서버와 통신합니다.

  • GET을 통해 웹 페이지나 데이터를 요청
  • POST를 통해 새로운 글이나 데이터를 전송
  • DELETE를 통해 저장된 글이나 데이터를 삭제

클라이언트와 서버가 HTTP 통신을 할 때 어떤 요청을 받고 보내냐에 따라 메소드 사용이 달라집니다.

따라서 제대로 보내고 받기 위해서는 일종의 규약이 존재합니다.

좋은 REST API를 디자인하는 법

REST 성숙도는 4단계로 나뉩니다. (0,1,2,3 단계)
2단계까지만 적용해도 좋은 API 디자인이라고 볼 수 있고, 2단계 까지 적용된 경우를 HTTP API라고 부릅니다.

REST 성숙도 모델 (0단계)

단순히 HTTP 프로토콜을 사용해 만든 것입니다.
해당 API 모델의 경우 REST API라고 할 수 없으며, 가장 기본 단계 입니다.

REST 성숙도 모델 (1단계)

개별 리소스와 통신을 준수해야 합니다.
1단계에서는 리소스가 무엇인지에 따라 각기 다른 엔드포인트로 구분하여 사용합니다. (쉽게 얘기하면 0단계보다 구체적입니다.)

0단계에서는 요청만 한다면 1단계에서는 응답까지 함께합니다.
리소스 요청 후 서버의 응답에 따라 성공/실패 여부를 반환합니다.

REST 성숙도 모델 (2단계)

CRUD에 맞게 적절한 HTTP 메소드를 사용하는 것에 중점을 둡니다.
0단계와 1단계가 단순 요청이었다면 2단계의 경우 요청의 구체적인 내용이 필요합니다. (GET, POST, DELETE)

구체적인 내용 뿐 아니라 응답도 문제가 있을 경우 어떤 문제가 있는지 명확하게 반환합니다. 따라서 REST 성숙도 모델의 2단계를 충족할 경우 좋은 API라고 볼 수 있습니다.

REST 성숙도 모델 (3단계)

HATEOAS(Hypertext As The Engine Of Application State)라는 약어로 표현되는 하이퍼미디어 컨트롤을 적용합니다. 응답에 리소스의 URI를 포함한 링크 요소를 삽입하여 작상하는 차이점이 있습니다.

응답 시 문제가 있을 경우 해결책을 알려주는 링크 요소를 함께 전달해주거나 새로운 링크를 넣어 새로운 기능에 접근할 수 있도록 하는 것이 3단계의 포인트입니다.

Open API와 API Key

공공데이터에 쉽게 접근할 수 있도록 정부는 Open API의 형태로 공공데이터를 제공하고 있습니다.

서버에서 공개된 API가 아닐 경우 API Key가 필요합니다. (로그인 된 이용자에게만 자원에 접근할 수 있는 권한을 API Key 형태로 제공하고, 데이터를 요청할 때 API Key를 같이 전달해야 원하는 응답을 받을 수 있습니다.)

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글