211119_개발자 준비하기(48일차) - REST API, OPEN API

4159 단어 diarydiary

배운 것(끄적끄적)


REST API

REST API는 HTTP 프로토콜을 통한 클라이언트와 서버간의 요청, 응답 방식을 좀 더 효율적으로 활용하기 위한 위한 규약이라 볼 수 있다.

리차드슨의 REST API 성숙모델은 총 4단계 (0~3단계)로 이루어져있는데 3단계 HATEOAS(Hypertext As the Engine Of Application State)는 하이퍼미디어 컨트롤을 포함하므로 준수하기가 까다로운 편이다. 그래서 REST API가 적용됐다고함은 보통 2단계인 HTTP 메소드 원칙 준수까지인 경우가 많다.

REST API 정리

  • Method ( CRUD )

    • Create를 요청할 땐 POST를 사용한다. 정상적으로 created가 되면 200 code가 아닌 201 created 코드가 응답된다.

    • Read를 요청할 땐 GET을 사용한다. GET은 Body를 포함하지 않으며 정보는 query parameter를 통해 세부적으로 요청할 수 있다.

    • Update는 PUT과 PATCH를 통해 가능하며, PUT은 요청한 데이터로 엎어버린다. 하지만 PATCH는 요청한 부분만 변경하고 나머지는 그대로 유지시킨다는 차이가 있다.

      // 기존 데이터
      {"weather" = "sunny"
      "date" = "2021/12/22"
      "temperature" = "22"
      }
      
      // PUT 요청
      {
      "weather" = "cloudy"
      }
      
      // PUT 결과
      {
      "weather" = "cloudy"
      }
      
      // PATCH 요청
      {
      "weather" = "cloudy"
      }
      
      // PATCH 결과
      {"weather" = "cloudy"
      "date" = "2021/12/22"
      "temperature" = "22"
      }
      
    • DELETE는 동일하게 DELETE를 이용한다. 삭제할 것은 본문이 아닌 엔드포인트에 명시하는 것이 좋음

  • 언어별로 별도의 처리가 필요할 경우 ⇒ Accept Language 헤더에 따른 응답을 적용한다.

    → 언어별로 별도의 엔드포인트를 작성하는 것은 하위호환성을 고려하지 못한 경우로 볼 수 있다.

HTTP API 테스트 도구

CLI

  • curl (리눅스 환경에 내장)
  • wuzz

GUI

  • Postman ⇒ 가장 쉬움.
  • Insomnia

OPEN API

오픈 API는 말그대로 공개된 API를 말한다. 주로 공공데이터포털을 통해 개방된 공공데이터나 그 외 기업에서 전달되는 API를 정보들을 통해 우리는 편리하게 정보들을 받아올 수 있다.

하지만 데이터들을 서버에 호출할 때마다 서버에 부하가 가기 때문에 공공데이터가 아닌 기업에서는 가격, 혹은 회원정책 등으로 공개키 발급을 통해 API를 공유한다.

Reference

5가지의 기본적인 REST API 디자인 가이드

https://www.youtube.com/watch?v=iOueE9AXDQQ&t=58s

느낀점


드디어 오픈 API를 배웠다. 개발을 배우기 전에 네이버지도 길찾기 혹은 지하철, 버스 등 교통정보 등이 API로 사용되었다고 알고있어서 귀에는 익었다. 또 내가 자주하는 게임인 LOL도 op.gg, fow.kr도 라이엇에서 제공하는 API를 통해 구현되어있는 정보 사이트들이다. 오늘은 https://openweathermap.org/api 여기서 날씨 정보를 불러오는 것까지 해보았다. 아마 넓은 API 세상에서 오늘 내가 한 것은 세발의 피도 안될꺼지만 발을 들였다는 게 중요하니까..! 이걸로 만들다만 Todo-List에 날씨 정보를 추가하기로 했었는데, 주말에 만들어봐야겠다!

주말에 할 것

  • CORS 정리
  • 자료구조 공부
  • 바닐라 자바스크립트로 Todo-List 마무리 + CSS 작업
  • Toy 문제 다시 풀어보기!

좋은 웹페이지 즐겨찾기