HTTP구조
。Http Request,Http Response의 구조로 구성.
▶Client는브라우저를 통해객체에 대한HTTP Request Message를Server에 전송
▶Server는 해당HTTP Request에 대한객체를Http Response Message에 포함하여Client에게 응답
Http Message
。HTTP Message의 종류는Request와Response로 구성
。HTTP Message의 구조는Request Line,Header,Body로 구성
▶Header:HTTP Message에 관한 metadata를 포함.
▶Body:HTTP Message의 실제 Data를 포함.
HTTP Request Message
POST /api/index.html HTTP/1.1 Host: example.com Content-Type: application/json // Data type 지정 Content-Length: 45 // { // Http Request Body 부분 "name": "홍길동", "email": "hong@example.com" }▶
JSONData를 포함한POSTRequest
HTTP Request Message구조
Request line
。Method Field,URL Field,HTTP Version Field를 갖는다.POST /api/index.html HTTP/1.1。
POST: Http Method
。/api/index.html: 요청할객체의Path name
▶URL의Path name에 해당하는객체를Server내저장장치에서 추출.
。HTTP/1.1: HTTP version
HTTP Header line
。HTTP Transaction에 필요한 모든 부가정보를 포함.
▶HTTP Message Body에 대한 내용, 크기, 압축 정보 및 Request를 한 Client의 정보, Server 정보 등을 포함.Host: example.com Content-Type: application/json // Data type 지정 Content-Length: 45。
Host:URL상Server Host name을 지시
▶ 사전에Client와Server의Host간TCP Connection를 구축하였으므로 해당 정보는웹 프록시 캐시에서 사용
HTTP Header종류
Accept:
。클라이언트가요청시서버로 부터응답받길 원하는Contents type을 설정하여서버에 전달
▶요청 헤더에Accept : application/json으로 설정 시데이터타입이JSON으로 return.
User-Agent:Server에 요청하는Client의웹브라우저정보
Accept-Language:
。HTTP Response Message응답 시의 언어를 설정
ex )Accept-Language: en-US
Connection:
。keep-alive:HTTP Server에게TCP Connection을 계속 유지할 것을 지시
。close:HTTP Response Message를 응답 후TCP Connection을 종료하도록 지시
Server:
。HTTP Response Message가 만들어진웹서버정보를 전달
EX )Server : Apache/2.2.3 ( CentOS )
Content-Length: 송신되는객체의Byte를 지시
Content-Type:HTTP Message Body의 저장된 객체의 종류를 지시
ex )application/json,text/html, ....
Date:HTTP Message가 전송된 시각
Last-Modified:HTTP Response Body에캡슐화된객체가 마지막으로 수정된 시각
Set-Cookie:
。HTTP Response의Cookie Header Line
。HTTP Server에서브라우저의Cookie File에식별번호를 저장하라고 지시
Cookie:
。HTTP Request의Cookie Header Line
。브라우저의Cookie File에서Server에서 발급받은식별번호를 참조 후HTTP Request Message에 포함하여 전송
If-modified-since
。웹 캐시에 저장된객체 사본이Outdated되었는지 검증을 위해Origin Server에객체 사본의Last-ModifiedDate와 함께HTTP Request Message에 포함하여 전송
HTTP Request Body
。Client가Server로input form을 전송 시 사용하는 영역
。POST , PUT , PATCHRequest Method에서 주로 사용되며JSON, XML등의 Data를 포함하여 전송
▶Spring의Controller에서@RequestBody를 통해DTO목적의POJO로 변환되어바인딩
。HTTP Request Body없이도URL Method를 통해Request Line의URL Field에서Query String을 통해input을 입력하여 전달할 수 있다.
ex )GET /api/animalsearch?monkey?banana HTTP/1.1
▶monkey와banana를 입력값으로 전달
HTTP Response MessageHTTP/1.1 200 OK Content-Type: application/json Content-Length: 55 { // Http Response Body 부분 "id": 1, "name": "홍길동", "email": "hong@example.com" }▶
JSON데이터를 포함한200 OKResponse
HTTP Response Message구조
Status Line
。HTTP Version field,HTTP Status code field,Status Phrase field를 갖는다.HTTP/1.1 200 OK。
HTTP/1.1: HTTP Version
。200: HTTP Status Code
。OK: Status Phrase ( 짧은 Status Code 설명글 )
HTTP HeaderContent-Type: application/json Content-Length: 55
Http Response Body
。HTTP Server에서HTTP Client로Request한 자원을캡슐화하여 포함하는 영역.
。GET,POST,PUT,DELETE의Response로 주로 사용되며서버에서클라이언트로Form( HTML문서, 이미지, 영상 ) ,JSON등 byte로 표현가능한 모든 데이터가 전송이 가능.