취업,면접 대비/cs 전공 공부

RestAPI란?

studying develop 2020. 3. 11. 12:26

도대체 레스트 에이피아이가 뭘까, 검색해서 보면 그냥 겟,포스트,풋 같은 메소드랑 

 

http 전송할때 포맷에 대해서만 나온다. http 프로토콜을 사용하기 위한 문법이 rest api인가

 

https://www.youtube.com/watch?v=LooL6_chvN4

R 이 representational을 의미한다. 이 정도로는 몰랐는데, 이 말의 뜻은 표현 할 수 있는 데이터 종류가 매우 많다는 의미 같다. 인터넷에서 볼 수 있는 모든 것을 표현 할 수 있다함. representation of resource , 유저 리스트, 사진 리스트, 비디오, 책 등등도 가능하다.

 

http를 통해 내가 리퀘스트를 날려서 원하는 리소스를 요청한다. 그리고 웹서버는 리스폰스가 포함된 웹페이지나 다른 방식으로 응답한다. 웹서버는 실제로 데이타베이스를 전송하는게 아니라, 그것의 표현을 전송하는 것이다. html이나 이미지 같은 representation of resources. 이런 데이터는 사람이 볼수있는 형태일 수도 있고, 프로그래머가 작업하기 쉬운 형태인 제이슨이나 xml이나 다른 형태일 수 있다. 

 

이제 url은 uniform resource locator라는 의미이다. 

프로토콜, 호스트, 리소스의 위치를 담아서 전송한다.

http 헤더에 content-Type도 있다.

 

이번에는 같은걸 html 콘텐츠로 요청했다


 

이제는 representational의 의미를 봤으니 state라는 단어를 보자.

웹 페이지에서 링크를 누르면 다음 페이지로 넘어간다. 이게 스테이트의 이동을 의미한다 함.

 


 

 

transfer의 의미는 리퀘스트를 요청하고 리스폰스를 받는 것이 transfer이라 한다.

 

 


 

 

이게 전체 구조라 함

 


이제 위의 그림에서 GET,POST의 차이를 알아 보면 된다. 

 

(이건 다른 글에서 작성)


우리는 이제 rest가 어떻게 작동하는지 알아 봤다.

 


 

이제는 rest api를 알아보자. 

레스트 에이피아이는 url이랑 api 메소드 그리고 파라미터로 구성되어 있다.

 

api는 프로그래밍 인터페이스라고 하지만, 같은 의미로 사용 가능한 메소드들의 집합이라고 봐도 된다.

 

 

 

응답은 html로 전송받지 않을 것이다. 왜냐하면 프로그래밍의 측면서에 html은 작성하는데 좋지 못해서 그렇다. 대신에 빨간색으로 적혀있는 방법들로 응답을 줄 것이다. rest는 그중에 하나인가 보다.

 

지금까지 우리는 rest api가 어떻게 작동하는지 보았다.

 


서버 api는 요청 포맷이 레스트도 있고 다른것도 있다.

 

rest의 endpoint url도 있고, 어떻게 요청하는지 나와있다.

 

 

응답은 이렇듯 제이슨으로 오는데, 프로그래밍 구현에 있어서 제이슨이 다루기 쉽기 때문이다.

 

 


 

 

결국 rest api를 이해하려면 어디에 무엇을(url) 어떻게 담아서(verbs) 요청하고, 응답을 어떻게(json, etc....) 받는지 알면 되는거 같다.

 

사용 목적은 api를 이용해 프로그래밍을 원활히 하려고 하는거 같은데, 다른 방법도 있는거 같아서 찾아봤다. 

 

Soap이란 것도 있다.

 

[https://www.youtube.com/watch?v=bPNfu0IZhoE]

simple object access protocol

 

이전에는 소프를 사용했다. 레스트는 현재 70프로의 api 비중을 차지한다 함.

 


 

소프 vs 레스트

 

소프틑 언어,플랫폼,전송 방법에 독립적이다. 반면에 레스트는 http에서만 잘 작동한다.

 

소프트는 분산 기업 환경에서 잘 작동한다. 반면에 레스트는 point-to-point으로 전송된다. 

 

소프트는 표준화되어 있고, pre-build extensibility를 제공한다, 빌트인 에러핸들링, 오토메이션이 제공된다.

 

레스트는 사용하기 쉽고, 값싼 툴, 배우기 쉽고, 효율적이고, 반면에 소프 모든 메시지에 xml을 사용하고, 레스트는 작은 메시지 포맷, 빠르고, 다른 웹 기술들과 디자인 철학이 비슷하다.

 

 

 


내가 궁금했던건 그래서 rest api라는데 왜 get 헤더에 키 값을 넣는게 이게 레스트라 그런건지 겟 메소드라 그런건지 햇갈렸다. 즉 왜 파라미터에 몽땅 안넣는지 궁금했다. 그냥 레스트 에이피아이에서 겟을 사용하는데 헤더에 저 값을 넣어달라는 소리였다.