ํฌ์ŠคํŠธ

๐ŸŒ ๋ชจ๋“  ํ†ต์‹ ์˜ ๊ทผ๋ณธ: Request - Response

์šฐ๋ฆฌ๊ฐ€ ์ธํ„ฐ๋„ท์„ ์“ฐ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ์ˆœ๊ฐ„, ์‚ฌ์‹ค ํ•˜๋‚˜์˜ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ๊ฐ€ ๋ฐ˜๋ณต๋ฉ๋‹ˆ๋‹ค.

1
2
3
4
5
6
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค.  
์„œ๋ฒ„๋Š” ๊ทธ ์š”์ฒญ์„ ํŒŒ์‹ฑํ•œ๋‹ค.  
์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.  
์„œ๋ฒ„๋Š” ์‘๋‹ต์„ ๋ณด๋‚ธ๋‹ค.  
ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต์„ ํŒŒ์‹ฑํ•˜๊ณ  ์†Œ๋น„ํ•œ๋‹ค.

์ด ๊ตฌ์กฐ๋Š” ๋‹จ์ˆœํ•˜์ง€๋งŒ ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. HTTP, DNS, SSH, RPC, SQL, REST API, GraphQL, SOAPโ€ฆ ์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ธฐ์ˆ ์ด ์ด ํ‹€ ์•ˆ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿงช ์ง์ ‘ ๋ณด๊ธฐ: curl๋กœ HTTP ์š”์ฒญ ํ•ด๋ถ€ํ•˜๊ธฐ ๊ฐ„๋‹จํ•œ ๋ช…๋ น ํ•˜๋‚˜๋กœ ์ด ๊ณผ์ •์„ ๋ˆˆ์œผ๋กœ ์ง์ ‘ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1
2
curl -v --trace out.txt http://google.com

  • -v: ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ํ—ค๋”๋ฅผ ํ„ฐ๋ฏธ๋„์— ์ถœ๋ ฅ
  • โ€“trace out.txt: ๋‚ด๋ถ€ ์†ก์ˆ˜์‹  ๋กœ๊ทธ๋ฅผ ํŒŒ์ผ๋กœ ์ €์žฅ

๐Ÿงฉ ๋กœ๊ทธ ๋ถ„์„: ์‹ค์ œ ์š”์ฒญ ํ๋ฆ„ out.txt์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค:

1
2
3
4
5
6
== Info: Host google.com:80 was resolved.
== Info: IPv4: 142.250.76.142
== Info: Trying 142.250.76.142:80...
== Info: Connected to google.com (142.250.76.142) port 80
== Info: using HTTP/1.x

โžค ํด๋ผ์ด์–ธํŠธ โ†’ ์„œ๋ฒ„ ์š”์ฒญ

1
2
3
4
5
6
=> Send header
GET / HTTP/1.1
Host: google.com
User-Agent: curl/8.13.0
Accept: */*

โžค ์„œ๋ฒ„ โ†’ ํด๋ผ์ด์–ธํŠธ ์‘๋‹ต

1
2
3
4
5
6
7
<&#x3D; Recv header
HTTP/1.1 301 Moved Permanently
Location: http://www.google.com/
Content-Type: text/html; charset&#x3D;UTF-8
...
Content-Length: 219

โžค HTML ์‘๋‹ต ๋ณธ๋ฌธ

1
2
3
4
5
301 Moved
301 Moved
The document has moved here.


์„œ๋ฒ„๋Š” ์š”์ฒญ์„ ๋ฐ›๊ณ , ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋‚ธ ํ—ค๋”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒ๋‹จํ•˜์—ฌ HTTP 301 ๋ฆฌ๋””๋ ‰์…˜ ์‘๋‹ต์„ ๋ณด๋‚ด์ค๋‹ˆ๋‹ค. ์ด ๊ณผ์ • ํ•˜๋‚˜๋งŒ์œผ๋กœ๋„ ์š”์ฒญ-์‘๋‹ต ๋ชจ๋ธ์˜ ๋ชจ๋“  ๋‹จ๊ณ„๊ฐ€ ๋‹ด๊ฒจ ์žˆ์Šต๋‹ˆ๋‹ค.


  • โœ… JSON: ๊ตฌ์กฐ ๋‹จ์ˆœ, ํŒŒ์‹ฑ ๋น ๋ฆ„
  • โŒ XML: ๊ตฌ์กฐ ๋ณต์žก, ํŒŒ์‹ฑ ๋น„์šฉ ํผ โ†’ ์‹ค์‹œ๊ฐ„ API์—์„  ๋น„ํšจ์œจ

  • Request - Response๋Š” ๋ชจ๋“  ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋‹ค.
  • curl์„ ํ™œ์šฉํ•˜๋ฉด ์ด ๊ณผ์ •์„ ์ง์ ‘ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • HTTP ํ—ค๋”, ์ƒํƒœ ์ฝ”๋“œ, ์‘๋‹ต ๋ณธ๋ฌธ์„ ์ฝ๋Š” ์—ฐ์Šต์€ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์ตํ•˜๋‹ค.
  • ํšจ์œจ์ ์ธ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ๋Š” JSON์„ ๊ธฐ๋ณธ ํฌ๋งท์œผ๋กœ ๊ณ ๋ คํ•˜์ž.

์ด์ฒ˜๋Ÿผ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ๋„ ๊ฒฐ๊ตญ ๋‹จ์ˆœํ•œ ์š”์ฒญ-์‘๋‹ต์˜ ๋ฐ˜๋ณต์ž…๋‹ˆ๋‹ค. ๊ทธ ํ๋ฆ„์„ ์ •ํ™•ํžˆ ์ฝ๋Š” ๋ˆˆ์„ ๊ฐ€์ง€๋ฉด, ๊ธฐ์ˆ ์ด ๋‹จ์ˆœํ•˜๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ๋Š” ์ €์ž‘๊ถŒ์ž์˜ CC BY 4.0 ๋ผ์ด์„ผ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

ยฉ SouthGlory. ์ผ๋ถ€ ๊ถŒ๋ฆฌ ๋ณด์œ 

Powered by Jekyll with Chirpy theme