Skip to content

Commit 47a1495

Browse files
committed
Docs :220124/ 제목 변경
1 parent 340162d commit 47a1495

File tree

1 file changed

+195
-0
lines changed

1 file changed

+195
-0
lines changed

CS/Network/HTTPMethod.md

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
# HTTP Method
2+
3+
> HTTP 특징
4+
5+
> HTTP 동작
6+
7+
> HTTP Method
8+
9+
> HTTP Status Code
10+
11+
<br>
12+
13+
## HTTP 특징
14+
15+
- HTTP 메시지는 HTTP 서버와 HTTP 클라이언트에 의해 해석된다.
16+
17+
- TCP/IP 를 이용하는 응용 프로토콜이다.
18+
19+
- HTTP는 연결 상태를 유지하지 않는 비연결성(Stateless) 프로토콜이다.
20+
21+
- HTTP는 연결을 유지하지 않는 프로토콜이기 때문에 요청/응답 방식으로 동작한다.
22+
23+
__장점__
24+
25+
- 불특정 다수를 대상으로 하는 서비스에 적합하다. -> 서버에서 다수의 클라이언트와 연결을 지속하게 되면 많은 리소스가 발생하게 된다. 그래서 서버가 응답을 마친 후 연결을 끊어 연결 유지를 위한 리소스를 줄이고 더 많은 연결을 할 수 있게 된다.
26+
27+
__단점__
28+
29+
- 연결을 끊어버리기 때문에 클라이언트의 이전 상황을 알 수 없다. -> 이러한 특징 때문에 정보를 유지하기 위해 __쿠키, 세션, 토큰__ 이 사용된다.
30+
31+
- 평문 통신이기에 도청이 가능하다. -> 암호화
32+
33+
<br>
34+
35+
## HTTP 동작
36+
37+
Client가 브라우저를 통해 URI을 통해 특정 요청(Request)을 보내면, Server는 해당 요청(Request)을 받아 처리를 하여 Client에게 응답(Response)을 하는 형태
38+
39+
![](img/HTTP_METHOD/2.png)
40+
41+
<br>
42+
43+
## HTTP Method
44+
클라이언트가 서버에게 사용자 요청의 목적이나 종류를 알리는 수단
45+
46+
47+
| Method | 설명 |
48+
| ------- | ------------------------------------------------------------------------------------------------------- |
49+
| GET | URI가 가진 정보를 검색하기 위해 요청하는 메소드 |
50+
| HEAD | GET메소드와 방식은 동일하지만, `응답에 BODY가 없고 응답 코드와 HEAD만 응답하는데 사용`되는 메소드 |
51+
| POST | 요청된 자원을 생성하기 위한 메소드 |
52+
| PUT | 요청된 자원을 수정할때 사용하고, `PATHCH와는 다르게 자원 전체를 갱신하는데 사용`되는 메소드 |
53+
| PATCH | PUT메소드와 유사하게 요청된 자원을 수정할때 사용되지만, `자원의 일부를 수정`하는 의미로 사용되는 메소드 |
54+
| DELETE | 요청된 자원을 삭제하기 위한 메소드 |
55+
| CONNECT | 동적으로 터널 모드를 교환하고 프락시 기능을 요청할때 사용하는 메소드 |
56+
| TRACE | 원격 서버에 루프백 메세지를 호출하기 위해 테스트용도로 사용하는 메소드 |
57+
| OPTIONS | 웹 서버에서 지원하는 메소드의 종류들을 확인할 경우 사용하는 메소드 |
58+
59+
<br>
60+
61+
__GET__ : 요청하는 데이터가 HTTP Request Message의 Header 부분에 url 이 담겨서 전송된다. 때문에 url 상에 ? 뒤에 데이터가 붙어 request 를 보내게 되는 것이다.
62+
63+
ex) www.example.com/show?name1=value1&name2=value2
64+
65+
66+
이러한 방식은 url 이라는 공간에 담겨가기 때문에 전송할 수 있는 데이터의 크기가 제한적이다. 또 보안이 필요한 데이터에 대해서는 데이터가 그대로 url 에 노출되므로 GET방식은 적절하지 않다.
67+
68+
__POST__ : POST 방식의 request 는 HTTP Request Message의 Body 부분에 데이터가 담겨서 전송된다.( body 의 타입은 Content-Type 헤더에 따라 결정 된다.)
69+
70+
POST 로 데이터를 전송할 때 길이 제한이 따로 없어 용량이 큰 데이터를 보낼 때 사용하거나 GET처럼 데이터가 외부적으로 드러나는건 아니라서 보안이 필요한 부분에 많이 사용된다. ( 하지만 데이터를 암호화하지 않으면 body의 데이터도 결국 볼 수 있는건 똑같다. )
71+
72+
<br>
73+
74+
### __HTTP 메서드의 속성__
75+
HTTP 메소드의 속성에는 안전(Safe Methods), 멱등(Idempotent Methods), 캐시가능(Cacheable Methods)가 있다.
76+
77+
1. 안전(Safe Methods): 계속해서 메서드를 호출해도 리소스를 변경하지 않는다.
78+
2. 멱등(Idempotent Methods): 메소드를 계속 호출해도 결과가 똑같다.
79+
3. 캐시가능(Cacheable Methods): 캐싱을 해서 데이터를 효율적으로 가져올 수 있다.
80+
81+
![](img/HTTP_METHOD/1.png)
82+
83+
84+
<br>
85+
86+
## HTTP Status code
87+
클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능
88+
89+
보통 100번대에서 500번대를 사용한다.
90+
91+
<br>
92+
93+
### 정보전송 임시응답 (1xx)
94+
- 서버가 요청을 클라이언트에서 성공적으로 수신을 했고 서버에서 처리중인 정보를 보낸디.
95+
96+
| Status Code | 설명 |
97+
| ----------- | ------------------ |
98+
| 100 | Continue |
99+
| 101 | Swiching protocols |
100+
101+
### 성공 (2xx)
102+
- 서버가 요청을 `성공`적으로 받았음을 알려준다.
103+
104+
| Status Code | 설명 |
105+
| ----------- | ----------------------------- |
106+
| 200 | Ok! |
107+
| 201 | Created |
108+
| 202 | Accepted |
109+
| 203 | Non-authoritative Information |
110+
| 204 | No Cotent |
111+
112+
### 리다이렉션 (3xx)
113+
- 요청 완료를 위해 추가 작업 조치가 필요하다
114+
115+
| Status Code | 설명 |
116+
| ----------- | ----------------- |
117+
| 301 | Moved permanently |
118+
| 302 | Not temporarily |
119+
| 303 | Not modified |
120+
121+
### 클라이언트 요청 오류 (4xx)
122+
- 클라이언에서 서버에 잘못된 요청을 보내 서버가 요청을 해결 할 수 없을때 발생하는 코드이며, `클라이언트측에서 발생하는 코드`이다.
123+
124+
| Status Code | 설명 |
125+
| ----------- | ----------------------------- |
126+
| 400 | Bad Request |
127+
| 401 | Unauthorized |
128+
| 402 | Payment required |
129+
| 403 | Forbidden |
130+
| 404 | Not found |
131+
| 405 | Method not allowed |
132+
| 407 | Proxy authentication required |
133+
| 408 | Request timeout |
134+
| 410 | Gone |
135+
| 412 | Precondition failed |
136+
| 414 | Request-URI too long |
137+
138+
### 서버에러 (5xx)
139+
- 클라이언트의 요청을 받고 서버에서 처리하지 못할때 발생하는 코드이며, `서버측에서 발생하는 코드`이다.
140+
141+
| Status Code | 설명 |
142+
| ----------- | -------------------------- |
143+
| 500 | Internal server error |
144+
| 501 | Not implemented |
145+
| 503 | Service unnailable |
146+
| 504 | Gateway timeout |
147+
| 505 | HTTP version not supported |
148+
149+
150+
151+
<br>
152+
153+
154+
155+
156+
157+
### 📚 참고
158+
[HTTP 특징](https://velog.io/@sujeong/2-%EC%9B%B9%EC%9D%98-%EB%8F%99%EC%9E%91-HTTP-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-%EC%9D%B4%ED%95%B4)
159+
160+
[HTTP Method 1](https://girawhale.tistory.com/66)
161+
162+
[HTTP Method 2](https://github.com/JaeYeopHan/Interview_Question_for_Beginner/tree/master/Network#http의-get과-post-비교)
163+
164+
[HTTP 동작 & 메서드 & 상태코드](https://github.com/devsungmin/Ready-For-Tech-Interview/blob/master/Network/HTTP동작과정과%20HTTP%20Method%2C%20상태코드.md)
165+
166+
<br>
167+
168+
169+
***
170+
171+
## Summary
172+
173+
***
174+
175+
<br>
176+
177+
# ⁉️ 면접 예상 질문
178+
179+
> 1. GET과 POST의 차이점에 대해서 설명하시오.
180+
181+
> 2. 조회하기 위한 용도로 POST가 아닌 GET 방식을 사용하는 이유에 대해서 설명하시오.
182+
183+
> 3. PUT 메서드와 PATCH 메서드의 차이점에 대해 설명하시오.
184+
185+
> 4. HTTP Statue Code(HTTP 상태 코드) 의 종류에 대해 설명하시오.
186+
187+
188+
189+
190+
191+
192+
193+
194+
195+

0 commit comments

Comments
 (0)