Skip to content

Commit

Permalink
Merge pull request #55 from cs-yum/jeehoon
Browse files Browse the repository at this point in the history
docs: 네트워크 HTTP Method 글 발행
  • Loading branch information
JitHoon authored Oct 25, 2023
2 parents cecfaa6 + 2ec59b9 commit 6a301c6
Show file tree
Hide file tree
Showing 9 changed files with 106 additions and 0 deletions.
11 changes: 11 additions & 0 deletions docs/Javascript/15. var, let, const.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
## 🧑🏻‍💻 var, let, const
---

### ✅ 각 키워드 사용 시기

#### ✏️ `var` 사용 시기
- ES6 이전의 JavaScript 코드나 브라우저 호환성을 고려해야 할 때 사용할 수 있다.

#### ✏️ `let` 사용 시기
- 재할당이 필요한 경우에 사용한다.

#### ✏️ `const` 사용 시기
- 변수에 할당한 값을 변경할 수 없기 때문에, 상수 값 또는 객체 불변성을 보장하기 위한 불변 변수(immutable variable)를 선언할 때 주로 사용한다.

| | var | let | const |
| --- | --- | --- | --- |
| 스코프 | 함수 레벨 스코프 | 블록 레벨 스코프 | 블록 레벨 스코프 |
Expand Down
22 changes: 22 additions & 0 deletions docs/네트워크/HTTP Method/1. HTTP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
> HTTP(Hypertext Transfer Protocol)는 TCP 기반의 서버 - 클라이언트 사이 메시지 교환 프로토콜을 의미한다.
<center>
<img src="/img/네트워크/5-1-0.png" width="200" height="200" alt="Request 메시지" />
</center>

## 🧑🏻‍💻 HTTP 메시지와 구조
---

### ✅ Request 메시지
> 클라이언트에서 서버로의 메시지로, 헤더(메서드 + URI + 프로토콜 버전), 공백라인, 바디로 구성되어있다.
<center>
<img src="/img/네트워크/5-1-1.png" width="350" height="400" alt="Request 메시지" />
</center>

### ✅ Response 메시지
> 서버에서 클라이언트로의 메시지로, 헤더(프로토콜 버전 + 상태코드 + 상태코드 설명), 공백라인, 바디로 구성되어있다.
<center>
<img src="/img/네트워크/5-1-2.png" width="350" height="400" alt="Request 메시지" />
</center>
Empty file.
73 changes: 73 additions & 0 deletions docs/네트워크/HTTP Method/2. HTTP Method.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
> HTTP Method는 리소스(URL 검색 혹은 서버로부터 받아온 결과물)를 다루는 방식을 뜻한다.
## 🧑🏻‍💻 HTTP Method 종류
---

> GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH
### ✅ GET
> 리소스를 조회한다.
- 리소스의 상태나 데이터를 요청하며, 요청의 본문(body)을 가질 수 없다.

### ✅ HEAD
> 실제 리소스를 반환하지 않고 GET 메서드로 요청했을 때 응답으로 오는 헤더 부분만 반환한다.
- 주로 리소스의 메타데이터나 헤더 정보를 확인할 때 사용된다.

### ✅ POST
> 새로운 리소스를 등록한다.
### ✅ PUT
> 대상 리소스가 없다면 리소스를 생성하고, 있다면 수정한다. 즉 기존 리소스를 완전히 대체한다.
### ✅ DELETE
> 리소스를 삭제한다.
### ✅ CONNECT
> 요청한 리소스에 대해 목적지 서버로 양방향 연결을 맺도록 요청한다.
- 주로 프락시 서버와 사용된다.

### ✅ OPTIONS
> 서버가 지원하는 메서드나 리소스의 특성을 조회한다.
- 서버가 지원하는 메서드나 기능을 확인하는 데 사용된다.

### ✅ TRACE
> 서버에게 현재 요청 메시지를 반환한다.
- Client - Server Side 간 Loop back Test 를 진행할 수 있게 도와준다.

- 주로 디버깅과 진단 목적으로 사용된다.

### ✅ PATCH
> 리소스 일부를 수정한다.
- 리소스의 일부만 수정하고 나머지 부분은 유지한다.

## 🧑🏻‍💻 HTTP Method 특성
---

<center>
<img src="/img/네트워크/5-2-1.png" width="350" height="400" alt="Request 메시지" />
</center>

### ✅ 안정성 (Safe)
- 서버 상태를 변경하지 않는 특성이다. 즉 서버 측 데이터를 변경하지 않는다.

### ✅ 멱등성 (Idempotent)
- 동일한 요청을 여러 번 실행하더라도 상태가 변하지 않고 동일한 결과를 얻을 수 있는 특성이다.

- POST 메서드는 주로 새로운 리소스를 생성하는 데 사용된다. POST 요청을 여러 번 보내면 각각 다른 리소스 인스턴스(다른 게시물, 다른 주문)가 생성되기 때문에 POST는 멱등성을 가지지 않는다.

- PUT 메서드는 기존 리소스를 항상 대체하기 때문에 동일한 결과를 얻을 수 있다. (값이 어떻게 업데이트되었든 간에, 항상 새로운 값으로 대체된다는 점에서 멱등이다.)

- PATCH 메서드는 동일한 요청을 여러 번 실행할 때, 리소스의 상태가 변경된 경우에 대한 요청을 계속 하게 되는 것이므로 결과가 달라질 수 있고 멱등성을 보장하지 않는다. (값이 어떻게 업데이트되는지에 따라 새로운 값을 제공한다.)

### ✅ 캐시 가능성 (Cacheable)
- 응답을 캐시할 수 있는 특성이다.

- GET 메서드는 리소스를 읽기 전용으로 보기 때문에 반복 요청에서 동일한 응답을 캐시하여 재사용할 수 있다.

- HTTP 스팩에서는 POST 메서드에 대한 몇 가지 캐시 지시어를 정의하고 있지만, 이러한 캐시 기능을 지원하는 경우는 드물다.
Empty file.
Binary file added static/img/네트워크/5-1-0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/네트워크/5-1-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/네트워크/5-1-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/네트워크/5-2-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 6a301c6

Please sign in to comment.