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 .
'JAVA > SpringBoot' 카테고리의 다른 글
REST API - POST , Json (0) | 2024.04.10 |
---|---|
REST API , URI 설계 (0) | 2024.04.09 |
Spring Boot - 간단한 Web , HTTP, Get, Post, Put (0) | 2024.04.09 |
게시판 프로젝트 - 첨부파일 다운로드 (0) | 2023.11.16 |
게시판 프로젝트 - 첨부파일 추가, 수정, 삭제 및 기존 파일 유지 (1) | 2023.11.15 |