많이 들어봤지만 들을 때마다 걔가...그건가...? 하는 REST API에 대해 정리해보려고 한다. REST API는 정보들이 주고 받아지는 데 있어서 개발자들 사이에 널리 쓰이는 일종의 형식
을 의미한다.
어떤 기계가 있으면 사용자가 그 기계를 활용할 수 있도록 제어장치를 만든다. 예를들어 TV와 리모컨의 관계가 그렇다. 이런 기계와 인간 간의 소통을 돕기 위해 만든 것을 인터페이스(interface)라고 한다.
인터페이스처럼 기계와 기계, 소프트웨어와 소프트웨어의 사이에서도 수많은 정보 요청과 교환이 이루어지고 있다. 이처럼 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 API(Application Programming Interface)라고 한다.
요즘 많이 사용하는 배달앱에서 서버에 주문을 넣는 등 이런 서비스들에서 많이 사용되는 것이 바로 REST라는 형식의 API이다. REST API의 가장 큰 특징은 각 요청이 어떤 동작이나 정보를 요구하는지 그 요청의 모습 자체로 추론 가능하다는 것이다. REST API는 요청을 보낸 주소만으로 대략 뭘 하는 요청인지 파악이 가능해진다.
REST API란, HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 개발자들 사이에 널리 지켜지는 약속이다.
서버에 REST API로 요청을 보낼 때는 HTTP(HyperText Transfer Protocol) 규약에 따라 신호를 전송한다. HTTP로 요청을 보낼 때도 여러 메소드가 있다. REST API서는 크게 4개 혹은 5개의 메소드를 사용한다.
아래는 좋지 않은 예시이다.
http://restapi.example.com/createrecipes
http://restapi.example.com/updaterecipes/Kimchi
여기서 create, update는 삭제하고 명사만 가지는게 좋다. 여기서 복수형을 사용한 recipes는 컬렉션
kimchi는 DB에서 고유 식별자(unique identifier)
가 된다.
위에서 설명했듯 get을 통해 정보를 읽어오고, post를 통해 정보를 생성하고, put을 통해 수정하고 delete를 통해 삭제한다.
/recipes로 GET요청을 보내면 레시피의 리스트를 가져온다.
http://restapi.example.com/recipes
/recipes로 POST요청을 보내면 레시피를 생성한다.
http://restapi.example.com/recipes
/recipes/kimchi 로 get 요청을 보내면 김치레시피에 대한 상세 정보를 얻는다.
http://restapi.example.com/recipes/kimchi
/recipes/kimchi 로 PUT/DELETE 요청을 보내면 해당 정보를 편집하거나 삭제한다.
http://restapi.example.com/recipes/kimchi
면접에서 많이 물어보는 내용이라 조금 더 공부하고 정리할예정.
RestFul api design guidelines 등 조금 더 찾아볼 것-> 모르겠소. 다시 정리 예정.....ㅎ