HTTP는 클라이언트-서버 모델을 기반으로 동작한다.
클라이언트가 요청을 보내면 서버가 응다을 반환하는 방식.
향후 인증/인가 세션에서 HTTP 프로토콜의 가장 중요한 특징에 대해 좀 더 실용적인 측면에서 상세히 다룰 예정
무상해(stateless)라고 한다.확장 헤더를 추가하여 기능을 확장할 수 있다.다양한 데이터 형식을 전송할 수 있다.HTTP 메세지는 요청(Request)과 응답(Response)로 나눌 수 있다.
인증이다.HTTP 상태코드는 서버가 클라이언트의 요청을 처리한 결과를 나타내요. 상태코드는 세 자리 숫자로 구성되며, 첫 번째 자리에 따라 의미가 달라져요.
HTTP 상태코드는 서버가 클라이언트의 요청을 처리한 결과를 나타내요. 상태코드는 세 자리 숫자로 구성되며, 첫 번째 자리에 따라 의미가 달라져요.

(2)-1. 1xx: 정보
100 Continue 요청의 일부를 서버가 받았으며, 나머지를 계속 보내라는 의미에요.(2)-2. 2xx: 성공
200 OK 요청이 성공적으로 처리되었음을 나타내요.201 Created 요청이 성공적이었으며, 새로운 자원이 생성되었음을 나타내요.(2)-3. 3xx: 리다이렉션
301 Moved Permanently 요청한 리소스가 영구적으로 새로운 URL로 이동했음을 나타내요.302 Found 요청한 리소스가 임시로 다른 URL로 이동했음을 나타내요.(2)-4. 4xx: 클라이언트 오류
400 Bad Request 잘못된 요청임을 나타내요.401 Unauthorized 인증이 필요함을 나타내요.404 Not Found 요청한 리소스를 찾을 수 없음을 나타내요.(2)-5. 5xx: 서버 오류
500 Internal Server Error 서버가 요청을 처리하는 동안 오류가 발생했음을 나타내요.502 Bad Gateway 서버가 게이트웨이 또는 프록시 역할을 하는 서버로부터 유효하지 않은 응답을 받았음을 나타내요.(2)-1. 1xx: 정보
100 Continue 요청의 일부를 서버가 받았으며, 나머지를 계속 보내라는 의미에요.(2)-2. 2xx: 성공
200 OK 요청이 성공적으로 처리되었음을 나타내요.201 Created 요청이 성공적이었으며, 새로운 자원이 생성되었음을 나타내요.(2)-3. 3xx: 리다이렉션
301 Moved Permanently 요청한 리소스가 영구적으로 새로운 URL로 이동했음을 나타내요.302 Found 요청한 리소스가 임시로 다른 URL로 이동했음을 나타내요.(2)-4. 4xx: 클라이언트 오류
400 Bad Request 잘못된 요청임을 나타내요.401 Unauthorized 인증이 필요함을 나타내요.404 Not Found 요청한 리소스를 찾을 수 없음을 나타내요.(2)-5. 5xx: 서버 오류
500 Internal Server Error 서버가 요청을 처리하는 동안 오류가 발생했음을 나타내요.502 Bad Gateway 서버가 게이트웨이 또는 프록시 역할을 하는 서버로부터 유효하지 않은 응답을 받았음을 나타내요.HTTP 메서드는 클라이언트가 서버에게 요청의 성격을 알리는 데 사용한다.
REST API는 이러한 HTTP 메서드를 사용하여 CRUD 작업을 수행한다.

https://api.example.com ✔️ 엔드포인트
| 순번 | 요청내용 | method | url |
|---|---|---|---|
| 1 | 게시글을 추가 | POST | /posts |
| 2 | 모든 게시글 조회 | GET | /posts |
| 3 | 특정 게시글 조회 | GET | /posts/:id |
| 4 | 특정 게시글 정보 업데이트 | PUT | /posts/:id |
| 5 | 특정 게시글 정보 일부 수정 | PATCH | /posts/:id |
| 6 | 특정 게시글 정보 삭제 | DELETE | /posts/:id |
✔️ 응답/요청 예시
☝ Content-Type: application/json?
Content-Type: application/json헤더는 HTTP 요청 또는 응답의 본문(body) 데이터 형식을 나타내기 위해 사용됩니다. 이 헤더는 서버나 클라이언트에게 본문 데이터가 JSON 형식임을 알려줍니다.
/postsPOSTContent-Type: application/json{
"title": "string",
"body": "string",
"userId": "integer"
}{
"id": "integer",
"title": "string",
"body": "string",
"userId": "integer"
}/postsGET[
{
"id": "integer",
"title": "string",
"body": "string",
"userId": "integer"
},
...
]/posts/{id}GET{
"id": "integer",
"title": "string",
"body": "string",
"userId": "integer"
}/posts/{id}PUTContent-Type: application/json{
"title": "string",
"body": "string",
"userId": "integer"
}{
"id": "integer",
"title": "string",
"body": "string",
"userId": "integer"
}/posts/{id}PATCHContent-Type: application/json{
"title": "string",
"body": "string",
"userId": "integer"
}{
"id": "integer",
"title": "string",
"body": "string",
"userId": "integer"
}/posts/{id}DELETE