REST API는 HTTP 프로토콜을 통한 클라이언트와 서버간의 요청, 응답 방식을 좀 더 효율적으로 활용하기 위한 위한 규약이라 볼 수 있다.
리차드슨의 REST API 성숙모델은 총 4단계 (0~3단계)로 이루어져있는데 3단계 HATEOAS(Hypertext As the Engine Of Application State)는 하이퍼미디어 컨트롤을 포함하므로 준수하기가 까다로운 편이다. 그래서 REST API가 적용됐다고함은 보통 2단계인 HTTP 메소드 원칙 준수까지인 경우가 많다.
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 헤더에 따른 응답을 적용한다.
→ 언어별로 별도의 엔드포인트를 작성하는 것은 하위호환성을 고려하지 못한 경우로 볼 수 있다.
오픈 API는 말그대로 공개된 API를 말한다. 주로 공공데이터포털을 통해 개방된 공공데이터나 그 외 기업에서 전달되는 API를 정보들을 통해 우리는 편리하게 정보들을 받아올 수 있다.
하지만 데이터들을 서버에 호출할 때마다 서버에 부하가 가기 때문에 공공데이터가 아닌 기업에서는 가격, 혹은 회원정책 등으로 공개키 발급을 통해 API를 공유한다.
Reference
https://www.youtube.com/watch?v=iOueE9AXDQQ&t=58s
드디어 오픈 API를 배웠다. 개발을 배우기 전에 네이버지도 길찾기 혹은 지하철, 버스 등 교통정보 등이 API로 사용되었다고 알고있어서 귀에는 익었다. 또 내가 자주하는 게임인 LOL도 op.gg, fow.kr도 라이엇에서 제공하는 API를 통해 구현되어있는 정보 사이트들이다. 오늘은 https://openweathermap.org/api 여기서 날씨 정보를 불러오는 것까지 해보았다. 아마 넓은 API 세상에서 오늘 내가 한 것은 세발의 피도 안될꺼지만 발을 들였다는 게 중요하니까..! 이걸로 만들다만 Todo-List에 날씨 정보를 추가하기로 했었는데, 주말에 만들어봐야겠다!