JAVA/SpringBoot

HTTP 심화

whyHbr 2024. 4. 15. 16:45
728x90
반응형

Prorocol?

서로 주고 받을 데이터에 대한 형식을 정의한 것, 서로 간의 통신을 위한 약속 규칙.

 

URL?

- Uniform resource identifier, 웹상 존재하는 HTML, 문서, 멀티미디어 파일 등의 위치를 지정할 때 사용하는 표현 방식

- 인터넷 상의 리소스 위치를 나타낸다.

 

HTTP?

- 웹을 구성하는 세가지 요소 중 하나

- Hyper Text Transfer Protocal, 텍스트 기반의 프로토콜이다.

- 웹에서 사용되는 HTML 문서, 멀티미디어, 파일 등의 데이터를 전송할 때 사용되는 통신 프로토콜

- stateless 상태를 유지하지 않는다. 서버가 클라이언트의 정보를 저장하지 않는다. 같은 클라이언트가 요청을 해도 구별할 수 없다. 그래서 쿠키 ( 서버측 기술, 클라이언트 구별 기술), 세션을 사용한다.

- 확장 가능하다, 커스텀 헤더 추가 가능하다.

- 웹 브라우저가 서버에게 특정 자원이나 동작을 요청하고, 웹 서버가 이에 대해 응답하는 형식으로 구성되어 있다. 

 

 

HTTP 메세지 

- 클라이언트와 서버 간에 주고받는 데이터의 형식을 나타낸다. 

- HTTP메세지 타입은 요청 (request)와 응답 (response) 메세지로 구분된다. 

각 메세지는 시작줄, 0개 이상의 헤더 필드, 하나의 빈 줄 및 필요시 메세지 바디로 구성된다. 

 

* 요청 메세지 : 클라이언트가 서버로 보내는 메세지.

* 응답 메세지 : 서버가 클라이언트로 보내는 메세지

 

* 시작줄 start line : 요청 메세지의 시작줄은 명령어에 해당하는 메소드(GET, POST, PUT DELETE..)로 구성된다. 

응답 메세지의 시작줄은 상태 코드(100,200, 300...)와 이유를 설명하는 상태라인(OK, NOT FOUND)으로 구성된다. 

 

* 헤더 Header : 시작줄 다음에는 0개 이상의 헤더 필드가 있다.

헤더 필드는 일반 헤더 (general header), 요청 헤더 (request header), 응답 헤더 (response header) 및 실체 헤더 (entity header) 가 있다.

보통 하나의 http메세지는 여러 개의 헤더 필드를 가진다. 각 헤더를 구성하는 필드는 '필드명 : 필드값' 으로 구성되며, 필드명은 대소문자를 구분한다. 

요청 메세지의 헤더에는 추가적인 요청 정보를 포함하며 키-값 쌍의 형태로 구성된다.

응답 메세지의 헤더에는 추가적인 응답 정보를 포함하며 키-값 쌍의 형태로 구성된다.

 

* 빈줄 empty line : 마지막 헤더 필드 다음에는 빈줄이 오며, 헤더 필드의 끝을 나타낸다.

 

*바디 Body: 빈줄 다음에는 HTML문서, 그래픽 파일 등과 같은 데이터가 있으며 이와 같은 HTTP 데이터를 메세지 바디, 또는 엔티티 바디 라고 한다. HTTP 메세지에 따라 바디가 없는 경우도 있다. (GET은 바디가 없다. )

요청 메세지의 바디는 필수적이지 않으며, POST의 경우 요청 내용이 포함 될 수 있다.

응답 메세지의 바디는 응답의 내용이 포함 될 수 있다.

 

HTTP method 

HTTP 요청 메세지의 시작줄은 메서드, 요청 URI, HTTP 버전으로 구성된다.

메소드는 클라이언트가 서버에게 특정한 작업을 요청할 때 사용하는 명령어이다. 

 

Path Variable: URI, 주소에 대해 어떠한 값을 가질 수 있나

Query Parameter: 조작

Data Body: http 바디에 데이터를 실을 수 있나.

 

 

- GET : READ. 요청 URI 에 명시된 정보를 찾아 클라이언트에게 전송하라는 의미이다. 바디가 없다. 전송할 데이터를 쿼리 스트링에 붙인다. 

Path Variable, Query Parameter = O, Data body =X

 

- HEAD : 서버가 전송할 http메세지중 헤더만 보내라는 명령. GET과 의미가 같지만 바디는 제외하고 헤더만 받기를 원할 때 사용한다.

 

-POST : CREATE . 클라이언트가 서버에게 데이터를 전송할 때 사용한다. http바디에 어떤 리소스를 생성할 것인지 넣는다.

ex) 게시판 글 작성, 폼에 데이터 입력 등

Path Variable = X, Data Body = O

 

-PUT : CREATE, UPDATE. 리소스가 없으면 생성한다. 있으면 갱신한다. 첨부된 바디 ( 데이터 실체) 를 요청 URI아래에 저장할 것을 요청할 때 사용한다.  서버에 파일을 저장할 수 있지만 서버 동작에 영향을 주어 위험하므로 별도의 인증과정 또는 FTP를 사용하는 경우가 많다

Path Variable = O, Data Body=X.

 

- DELETE : DELETE. 요청 URI가 지정하는 자원을 삭제한다. 

Path variable(통해 특정 데이터 삭제), Query Parameter (특정 데이터에 필터를 걸어 삭제 )= O, Data body = X 

 

- TRACE : 응용 계층의 루프백 테스트를 수행한다.

- CONNECT: 추후에 사용하기 위해 예약해 둔 것이다.

- OPTIONS  : 요청 URI 관련 통신 시 사용할 수 있는 옵션의 내용을 서버에게 질의할 때 사용한다. 

 

HTTP 상태코드

 

1xx : 정보제공. 요청 계속 또는 사용 포로토콜 변경 지시

2xx : 성공, 메서드 지시대로 요청을 수행

3xx : 리다이렉션 , 요청 수행 완료를 위해 추가적인 작업 필요

4xx : 클라이언트 에러, 잘못된 요청. 구문 오류 등

5xx : 서버 에러, 클라이언트의 요청은 유효하나 서버 자체의 문제 발생

 

 

 HTTP API

명확한 목적, RESTful 원칙 준수, 명확한 경로와 메서드, 요청과 응답의 일관성

 

API?

Application Programming Interface. 어떤 소프트웨어의 기능을 다른 소프트웨어에서 활용할 수 있도록 제공되는 인터페이스.

한 소프트웨어가 다른 소프트웨어에게 자신의 기능을 사용할 수 있는 권한을 부여하고 그 기능을 호출하고 사용하는 법을 정의한다. 

 

RESTful?

고전 api는모든 데이터를 형식, 규칙을 고려하지 않고 다 넣어 만들었다.

틀 만들고 규칙도 만들어 필요한 데이터만 추린것 -> REST API. 데이터를 HTTP 규칙에 맞게 잘 고려해 정돈해 보낸 API -> REST API의 규칙을 잘 시킨것이

-> RESTful . 

 

 

 

 

 

 

 

728x90