HTTP API란 HTTP 프로토콜을 통해 데이터를 주고받는 인터페이스를 뜻한다. 즉, 서로 다른 두 애플리케이션(또는 시스템)간의 통신을 위한 규약이다.
우선 HTTP API 에는 요청과 응답이 있다. 클라이언트에서 서버에 요청을 하게되면 서버는 이 요청을 받고 클라이언트에게 응답을 해준다.
이제 Request 와 Response에 대해 자세히 알아보자.
사용자(View)
-> "이름, 나이, 주소, 연락처 .." 주면서 회원가입 시켜줘 '요청'
HTTP Request
클라이언트가 서버에게 리소스에 대한 특정 동작을 요청하기 위해 보내는 메시지입니다.
1. HTTP Method (HTTP 메서드)
요청의 목적을 나타냅니다. 주요 HTTP 메서드에는 GET, POST, PUT, DELETE 등이 있습니다. 회원가입 요청의 경우 주로 POST 메서드가 사용됩니다.
2. URL (Uniform Resource Locator)
요청을 수행할 리소스의 위치를 지정합니다. 예를 들어, 회원가입을 위한 URL일 수 있습니다.
HTTP Version (HTTP 버전): 사용되는 HTTP 프로토콜의 버전을 나타냅니다. 예를 들어, HTTP/1.1 또는 HTTP/2.0 등이 있습니다.
3. Headers (헤더)
요청에 대한 부가적인 정보를 포함합니다. 이 정보에는 인증 정보, 캐시 제어, 컨텐츠 유형 등이 포함될 수 있습니다.
4. Body (본문)
요청의 본문에는 클라이언트가 서버로 전달하려는 데이터가 포함됩니다. 예를 들어, 사용자가 제공한 이름, 나이, 주소, 연락처 등의 정보가 여기에 포함될 수 있습니다.
Http api 응답은 클라이언트가 서버에 요청을 보내고, 서버가 그 요청에 대한 응답으로 반환하는 데이터를 의미. 일반적으로 텍스트 형식으로 되어있으며 주로 json or xml 형식으로 제공한다.
Http response 메세지는 request와 동일하게 공백(blank line)을 제외하고 3가지 부분으로 나누어진다.
1. Status Line
HTTP 프로토콜은 요청에 대한 상태를 나타내는 상태 코드를 반환. 상태 코드는 요청이 성공적으로 처리되었는지, 어떤 종류의 오류가 발생했는지 등을 알려준다. 일반적으로 사용되는 상태 코드에는 200 (OK), 404 (Not Found), 500 (Internal Server Error) 등이 있습니다. 형식은 http version, Status Code, Status Text 3가지 부분으로 구성되어 있음. 예시는 아래와 같다
HTTP/1.1 200 OK
[HTTP version][Status Code] [Status Text]
2. Headers
헤더는 응답의 메타데이터를 포함하고 있습니다. 이는 응답의 유형, 길이, 서버 정보 등을 포함할 수 있다.
형식은 Request의 헤더와 동일, 다만 response에서만 사용되는 header 값들이 있다. 예를들면 User-Agent 대신 Server헤더가 사용된다.
3. Body
응답 데이터를 포함한다. 주로 json, xml 또는 텍스트 형식, 결과 or 오류메세지 제공한다. Request 와 마찬가지로 모든 response가 body가 있지는 않음. 데이터를 전송할 필요가 없을 경우 body 가 비어있게 된다.
상태 코드 (Status Code): 상태 코드는 클라이언트에게 요청이 성공했는지, 실패했는지, 그 이유가 무엇인지를 알려줍니다. 상태 코드를 이해하면 클라이언트가 적절한 대응을 할 수 있습니다. 예를 들어, 200은 성공, 404는 리소스를 찾을 수 없음, 500은 서버 오류 등을 나타냅니다.
헤더 (Headers): 헤더는 응답의 메타데이터를 포함하고 있습니다. 이는 응답의 유형, 길이, 서버 정보 등을 포함할 수 있습니다. 예를 들어, Content-Type 헤더는 응답 본문의 데이터 형식을 알려줍니다.
본문 (Body): 본문은 실제 응답 데이터를 포함합니다. 이는 클라이언트가 필요한 정보를 제공하거나 작업의 결과를 전달합니다. 주로 JSON, XML 또는 일반 텍스트 형식으로 되어 있습니다. 클라이언트는 이 데이터를 분석하여 사용자 인터페이스에 표시하거나 다음 동작을 수행하는 데 사용합니다.
이 요소들은 모두 API 사용자에게 중요한 정보를 제공하므로, 올바른 응답을 이해하고 처리할 수 있도록 도와줍니다. 따라서 API를 설계할 때 이러한 요소를 제공하는 것이 좋습니다.