API는 Application Programming Interface의 약자로, 소프트웨어 응용 프로그램들이 서로 상호작용하기 위한 인터페이스를 총칭하는 말이다.
Web API는 API 중에서도 주로 HTTP (Hyper Text Transfer Protocol; 정보를 주고 받을 때 지켜야 하는 통신 규약) 를 통해 웹 기술을 기반으로 하는 인터페이스이다. Web API의 종류로는 REST, GraphQL, RPC 등이 있다.
REST (REpresentational State Transfer) API는 자원을 표현하고 상태를 전송하는 것에 중점을 둔 API인데, 요청의 모습을 보고 어떤 일을 하는지 알 수 있다. 정확히 말하면 REST라고 부르는 architecture로 HTTP 통신을 활용하는 것으로, 대부분의 서버들이 이 API 방법을 채택하고 있다. Resource, Method, Representation of Resource로 구성되어 있다.
users, products, orderswww.shopping.com/users, www.shopping.com/products, www.shopping.com/ordersGET /users/1가 요청되면, {"id" 1, "name" : "Alice", "email" : "alice@mail.com"}과 같이 json 데이터가 반환될 수 있다. URL이 어떻게 구성되어 있는지 살펴보자.
http://localhost:8080/users?name=alice
/predict, /train과 같은 엔드 포인트를 사용한다.CLI 환경에서 HTTP Header와 HTTP Payload를 이용해 HTTP 요청을 해보자.
curl -X POST -H "Content-Type: application/json" -d "{'name':'alice'}" http://localhost:8080/users
curl : CLI 환경에서 HTTP 요청을 할 때 사용하는 명령어-X POST : HTTP 메서드 POST(리소스 생성)를 사용하겠다.-H "Content-Type: application/json" : 지금 전송하는 데이터가 json 타입임을 알림. 이를 통해 HTTP header에 데이터를 key: value 형태로 저장한다.-d "{'name':'alice'}" : HTTP Payload에 실제 전송하려는 데이터를 담는다.http://localhost:8080/users : HTTP 요청을 보낼 목적지status code는 클라이언트 요청에 따라 서버가 어떻게 반응하는지 알려주는 코드이다.
- 1XX → 정보 : 요청을 받았고, 프로세스를 계속 진행
- 2XX → 성공 : 요청을 성공적으로 받았고, 프로세스를 실행
- 3XX → 리다이렉션 : 요청 완료를 위한 추가 작업이 필요
- 4XX → 클라이언트 오류 : 요청 문법이 잘못되었거나 요청을 처리할 수 없음
- 5XX → 서버 오류 : 서버가 요청 처리를 실패함
더 자세한 것은 이 페이지를 참조