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

주형(Jureamer)·2022년 1월 6일
0
post-custom-banner

배운 것(끄적끄적)


REST API

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

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

Untitled

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 문제 다시 풀어보기!
profile
작게라도 꾸준히 성장하는게 목표입니다.
post-custom-banner

0개의 댓글