API가 뭔데?
Application Programming Interface : 서로 다른 프로그램간에 소통할 수 있게 도와주는 통신규약
서버와 고객간의 통신규약 --> 서버에게 요청해서 데이터를 가져오는 방법
쉽게 설명해서 서버와 브라우저의 관계라고 생각하면 편하다
API의 종류
- SOAP API
- 클라이언트와 서버는 XML을 사용하여 메세지를 교환한다.
하지만, 근래에는 자주 사용되지 않으며 유연성이 떨어진다(JSON 도입때문인듯)
- RPC API
- 원격 프로시저 호출이라고 함. 클라이언트가 서버에서 함수나 프로시저를 완료하면 서버가 출력을 클라이언트에게 다시 전송한다.
- WebSocket API
- JSON객체를 사용하여 데이터를 전달하는 웹 API. 클라이언트와 서버간의 양방향 통신을 지원하기 때문에 실시간으로 클라이언트와 작업내용을 공유해야 할 때 사용된다.
- REST API
- 가장 많이 사용되고 유연한 API. 클라이언트가 서버에 요청을 데이터로 전송하면, 서버가 클라이언트의 입력을 사용하여 내부함수 실행 후 출력데이터를 클라이언트에게 반환
출처: Amazon aws - API란 무엇인가요
REST API
Representational State Transfer의 약자.
웹 API를 작성할 때 REST의 6가지 원칙을 중요시하게 생각함.
6가지 원칙
인터페이스는 일관성이 있어야 한다.
- 하나의 URL로는 하나의 데이터만 가져와야함
- 간결하고 예측가능하게 코드작성
- URL 이름을 관습에 맞게 짓자
2. Client-Server 역할 구분
- URL을 통해 서버에 있는 자료를 가져다 사용할 수 있다.
클라이언트는 요청만을, 서버는 응답만으로 반응하는 것.
각자의 역할에 맞게 동작해야 함.
3. Stateless
- 요청들은 각각 독립적으로 처리되어야 한다.
- 요청간의 의존성이 존재하는 코드를 작성해서는 안된다.
- 하나의 요청으로 요청에 필요한 모든 정보들을 실어보내는게 좋다.
4. Cacheable
- 요청을 통해 보내는 자료들은 캐싱이 가능해야 한다.(캐싱가능여부, 기간 설정)
- 캐싱이란 간단하게 자주 방문하거나 사용하는 웹페이지의 자료들을 클라이언트의 하드에 저장하여, 서버에 다시 요청하지 않아도 그 자료들을 하드로부터 불러올 수 있도록 하는 행위
5. Layered System
- GET - Read
- 리소스(자원)취득.
- 요청파라미터는 URL에 그대로 노출됨
- 브라우저를 이용해서 서버로부터 자원을 가져올 때 사용됨.
- POST - Create
- 리소스 생성, 리소스 데이터 추가
- 요청 파라미터는 Body에 위치하게 되어서 URL에 노출되지 않는다.
- 클라이언트에서 데이터를 폼으로 가져와서 서버측에서 동작할 때 사용
- PUT - Update
- Delete - Delete