GraghQL로 넘어가기전에 API와 rest api의 개념을 집고 넘어가야한다. 왜냐하면 모든 신기술이 그러하듯 기준 기술을 보완하여 나왔기에 기존의 개념이 있고 거기서 확장되었기에 더 나은 기술이 나온것이다. 그럼 API에 대해서 먼저 알아본다. API는 Application Programming Interface
의 줄임말로 어플리케이션과 프로그램밍의 상호작용 방법을 말한다. 단적인 예로 TV와 리모컨의 관계를 들 수 있다.리모컨 버튼을 누르면 버튼에 해당하는 기능을 TV가 수행한다. TV는 application이고 리모컨은 interface로 들 수 있다. 여기서 리모콘는 TV를 만든 제조사가 만들고 고객은 리모콘을 통해 TV를 제어할 수 있게 된다.
즉, 애플리케이션, 서버, 웹사이트 만드는 사람들이 서비스를 이용하는 고객이 서비스 제어에 필요로하는 기능을 개발하고 그것을 API라고 한다.
Rest API나 graghQL API를 사용하는 이유는 의사소통을 하기 위해 사용되어진다. 의사소통은 사용자가 서버의 기능을 사용하기 위한 통신 기능이며 그 형태가 URL로 이루어져 있다. 그리고 URL들은 대체적으로 원하는 기능을 명사와 복수 형태로 표현하여 사용자가 요청하고자 하는 기능을 쉽게 유추할 수 있게 된다.
사용자 입장에서 URL의 동작 특징을 보면 보통 서버로부터 데이터를 요청하는 수준이였다. 그리고 이번에는 요청 수준을 넘어 다양한 동작으로 rest를 살펴볼 것이다. 우선 API는 앱의 모든 기능을 구현하고자 하지 않는다.
가령 영화앱을 만든다는 가정하에 URL에 create, add, puload등의 동사를 넣어 기능을 만들 수 있다. 하지만 동사로 URL를 정의하면 앱을 만드는 제작자별로 동사의 형태를 다르게 하여 정확히 어떠한 동작을 하는지 구분할 수 없게되고 좋은 rest API 사례라 볼 수 없다. 대신 이러한 동작들을 우리는 HTTP 메소드에 의존하여 수행한다. HTTP 메소드와 결합한 rest는 HTTP METHOD URL형태
로 결합하여 API를 요청하며 GET과 POST를 살펴볼거다. GET은 그동안 사용자 입장에서 평범하게 URL을 입력하면 서버로부터 브라우저가 데이터를 표시하는 기능으로 동작하고 POST는 뭔가를 만들고자 하였을때 사용한다.
예를 들어 api/moives/
를 GET으로 입력하면 영화의 대한 정보를 받아
오지만 POST라고 입력하면 영화에 대한 정보를 생성
하는 기능으로 동작하게 된다. 그리고 PUT을 입력하면 영화에 대한 정보를 업데이트 하는 기능
이 동작하며 DELETE를 입력하면 영화에 대한 정보를 삭제하는 기능
을 한다. 이렇게 URL의 동사에 관한 부분을 HTTP 메소드와 URL 결합으로 이루어지며 그 역할도 정의도 매우 쉽게 구현할 수 있다.