CS/λ„€νŠΈμ›Œν¬

[λ„€νŠΈμ›Œν¬] HTTP λ©”μ†Œλ“œ(GET / POST)

코더999 2023. 1. 31. 09:19

ν”„λ‘œν† μ½œ

  • 컴퓨터 λ‚΄λΆ€μ—μ„œ λ˜λŠ” 컴퓨터 μ‚¬μ΄μ—μ„œ λ°μ΄ν„°μ˜ κ΅ν™˜ 방식을 μ •μ˜ν•˜λŠ” κ·œμΉ™μ²΄κ³„
  • κΈ°κΈ° κ°„ 톡신은 κ΅ν™˜λ˜λŠ” 데이터 ν˜•μ‹μ— λŒ€ν•΄ μƒν˜Έν•©μ˜λ₯Ό μš”κ΅¬ν•˜λ©°, 이런 ν˜•μ‹μ„ μ •μ˜ν•˜λŠ” κ·œμΉ™μ˜ 집합이 ν”„λ‘œν† μ½œ

 

HTTP ν”„λ‘œν† μ½œ

  • 인터넷 μƒμ—μ„œ 데이터λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•œ μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λΈμ„ λ”°λ₯΄λŠ” ν”„λ‘œν† μ½œ
  • μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 레벨의 ν”„λ‘œν† μ½œλ‘œ, TCP/IP μœ„μ—μ„œ μž‘λ™
  • μ–΄λ–€ μ’…λ₯˜μ˜ 데이터든 전솑할 수 μžˆλ„λ‘ μ„€κ³„λ˜μ–΄μžˆμŒ

 

HTTP ν”„λ‘œν† μ½œμ˜ μž‘λ™λ°©μ‹

μ„œλ²„/ν΄λΌμ΄μ–ΈνŠΈ λͺ¨λΈμ„ λ”°λ₯΄κ³ , ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μš”μ²­(request)을 보내면 μ„œλ²„λŠ” 응닡(response)ν•œλ‹€.

 


 

HTTP λ©”μ„œλ“œ 

  • HTTPλŠ” μš”μ²­ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜μ—¬, μ£Όμ–΄μ§„ λ¦¬μ†ŒμŠ€μ— μˆ˜ν–‰ν•˜κΈΈ μ›ν•˜λŠ” 행동을 λ‚˜νƒ€λƒ„
  • 각각의 λ©”μ„œλ“œλŠ” μ„œλ‘œ λ‹€λ₯Έ 의미λ₯Ό κ΅¬ν˜„ν•˜μ§€λ§Œ, 일뢀 κΈ°λŠ₯은 λ©”μ„œλ“œ 집합간에 μ„œλ‘œ κ³΅μœ ν•˜κΈ°λ„ 함
  • HTTP Method : REST(Representational State Transfer)λ₯Ό μ§€ν‚€λ©΄μ„œ ν–‰μœ„λ₯Ό μ „λ‹¬ν•˜λŠ” 방법
    2000년도에 둜이 필딩이 μ›Ήμ˜ μž₯점을 μ΅œλŒ€ν•œ ν™œμš©ν•  수 μžˆλŠ” μ•„ν‚€ν…μ²˜λ‘œμ¨ RESTλ₯Ό λ°œν‘œ
    → 지원(Resource) : URI
         ν–‰μœ„(Verb) : HTTP Method
         ν‘œν˜„(Representations)

 

HTTP λ©”μ„œλ“œ μ’…λ₯˜

  1. GET(쑰회) : μ„œλ²„λ‘œλΆ€ν„° 데이터λ₯Ό 취득
  2. POST(등둝) : μ„œλ²„μ— 데이터λ₯Ό μΆ”κ°€, μž‘μ„±
  3. PUT(μˆ˜μ •) : μ„œλ²„μ˜ 데이터λ₯Ό κ°±μ‹ , μž‘μ„±
  4. PATCH : λ¦¬μ†ŒμŠ€μ˜ 일뢀뢄을 μˆ˜μ •
  5. DELETE(μ‚­μ œ) : μ„œλ²„μ˜ 데이터λ₯Ό μ‚­μ œ
  6. HEAD : μ„œλ²„μ˜ λ¦¬μ†ŒμŠ€μ˜ 헀더(메타 λ°μ΄ν„°μ˜ 취득)
  7. OPTIONS : λ¦¬μ†ŒμŠ€κ°€ μ§€μ›ν•˜κ³  μžˆλŠ” λ©”μ†Œλ“œμ˜ 취득
  8. CONNECT : ν”„λ‘μ‹œ λ™μž‘μ˜ 터널 접속을 λ³€κ²½

 

 

 

 GET

ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ μ–΄λ– ν•œ λ¦¬μ†ŒμŠ€λ‘œ λΆ€ν„° μ •보λ₯Ό μš”μ²­ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œ

데이터λ₯Ό μ½κ±°λ‚˜(Read), κ²€μƒ‰(Retrieve)ν•  λ•Œμ— μ‚¬μš©

URL μ£Όμ†Œ λμ— νŒŒλΌλ―Έν„°λ‘œ ν¬ν•¨λ˜μ–΄ μ „솑되며, μ΄ λΆ€λΆ„을 μΏΌλ¦¬ μŠ€νŠΈλ§ (query string) μ΄λΌκ³  λΆ€λ₯Έλ‹€.
URL λμ— " ? " λ₯Ό λΆ™μ΄κ³  κ·Έλ‹€μŒ λ³€μˆ˜λͺ…1=κ°’1&λ³€μˆ˜λͺ…2=κ°’2... ν˜•μ‹μœΌλ‘œ μ΄μ–΄ λΆ™μ΄λ©΄ λœλ‹€.
예) www.example.com/show?name1=홍길동&name2=κΉ€λ‘˜λ¦¬
→ μ„œλ²„μ—μ„œλŠ” name1 κ³Ό name2 λΌλŠ” νŒŒλΌλ―Έν„° λͺ…μœΌλ‘œ 각각 홍길동과 κΉ€λ‘˜λ¦¬μ˜ νŒŒλΌλ―Έν„° 값을 전달 받을 수 μžˆλ‹€.

 

 

 

POST

λ¦¬μ†ŒμŠ€λ₯Ό 생성/μ—…λ°μ΄νŠΈν•˜κΈ° μœ„ν•΄ μ„œλ²„μ— 데이터λ₯Ό λ³΄λ‚΄λŠ” 데 μ‚¬μš©λ˜λŠ” λ©”μ„œλ“œ

GETκ³Ό λ‹¬λ¦¬ μ „솑해야될 λ°μ΄ν„°λ₯Ό HTTP λ©”μ„Έμ§€μ˜ Body에 λ‹΄μ•„μ„œ μ „솑

HTTP λ©”μ„Έμ§€μ˜ BodyλŠ” 길이의 μ œν•œμ—†μ΄ 데이터λ₯Ό 전솑할 수 있(GETκ³Ό 달리 λŒ€μš©λŸ‰ 데이터λ₯Ό 전솑할 수 μžˆλŠ” 이유)

 

 

 

GET κ³Ό POST

  GET POST
μΊμ‹œ β­• ❌
λΈŒλΌμš°μ € 기둝 β­• ❌
뢁마크 μΆ”κ°€ β­• ❌
데이터 κΈΈμ΄μ œν•œ β­• ❌
HTTP 응닡 μ½”λ“œ 200 OK 201 Created
μ–Έμ œ 주둜 μ‚¬μš©? λ¦¬μ†ŒμŠ€ μš”μ²­ λ¦¬μ†ŒμŠ€ 생성
λ¦¬μ†ŒμŠ€ 전달방식 쿼리슀트링 HTTP Body
Idempotent β­• ❌

 

Idempotent (= 멱등법칙, λ©±λ“±μ„±)

  • 연산을 μ—¬λŸ¬λ²ˆ μ μš©ν•˜λ”λΌλ„ κ²°κ³Όκ°€ 달라지지 μ•ŠλŠ” μ„±μ§ˆ
  • GET 이 idempotent μ„€κ³„λ˜μ—ˆλ‹€λŠ” 것은 GET으둜 μ„œλ²„μ—κ²Œ λ™μΌν•œ μš”μ²­μ„ μ—¬λŸ¬λ²ˆ μ „μ†‘ν•˜λ”λΌλ„
    λ™μΌν•œ 응닡이 λŒμ•„μ™€μ•Όν•œλ‹€λŠ” 것을 μ˜λ―Έν•¨. λ”°λΌμ„œ, GET은 주둜 μ‘°νšŒν• λ•Œ μ‚¬μš©
  • λ°˜λŒ€λ‘œ POSTλŠ” Non-Idempotentν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„μ— λ™μΌν•œ μš”μ²­μ„ μ—¬λŸ¬λ²ˆ 전솑해도 응닡은 항상 λ‹€λ₯Ό 수 μžˆλ‹€.
    λ”°λΌμ„œ, POSTλŠ” μ„œλ²„μ˜ μƒνƒœλ‚˜ 데이터λ₯Ό λ³€κ²½μ‹œν‚¬ λ•Œ μ‚¬μš©. 

 

 

 

 

 

 

더보기

μ°Έκ³ ) https://brilliantdevelop.tistory.com/32

 

HTTP μ •μ˜ 및 λ™μž‘ 방식

ν”„λ‘œν† μ½œ ν”„λ‘œν† μ½œμ€ 컴퓨터 λ‚΄λΆ€μ—μ„œ, λ˜λŠ” 컴퓨터 μ‚¬μ΄μ—μ„œ λ°μ΄ν„°μ˜ κ΅ν™˜ 방식을 μ •μ˜ν•˜λŠ” κ·œμΉ™ μ²΄κ³„μž…λ‹ˆλ‹€. κΈ°κΈ° κ°„ 톡신은 κ΅ν™˜λ˜λŠ” λ°μ΄ν„°μ˜ ν˜•μ‹μ— λŒ€ν•΄ μƒν˜Έ ν•©μ˜λ₯Ό μš”κ΅¬ν•©λ‹ˆλ‹€. 이런

brilliantdevelop.tistory.com

 

μ°Έκ³ ) https://www.ascentkorea.com/what-is-url/

 

URLμ΄λž€ 무엇인가? - μ–΄μ„ΌνŠΈ 코리아

URLμ΄λž€ 무엇인지에 λŒ€ν•΄ μ•Œμ•„λ³΄κ³  URL ꡬ쑰 및 SEO μΉœν™”μ μΈ μ„€μ • 방법에 λŒ€ν•œ λ‚΄μš©μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. URL을 SEO μΉœν™”μ μœΌλ‘œ 단좕할 수 μžˆλŠ” 방법에 λŒ€ν•΄ μ•Œμ•„λ³΄μ„Έμš”.

www.ascentkorea.com

 

μ°Έκ³ ) https://noahlogs.tistory.com/35

 

[λ„€νŠΈμ›Œν¬] get κ³Ό post 의 차이

GET κ³Ό POST λŠ” HTTP λ©”μ„œλ“œλ‘œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ 무언가λ₯Ό μš”μ²­ν•  λ•Œ μ‚¬μš©ν•œλ‹€. 2019/06/01 - [IT 정보 둜그캣/CS] - [λ„€νŠΈμ›Œν¬] http λž€ [λ„€νŠΈμ›Œν¬] http λž€ 기본적으둜 λ„€νŠΈμ›Œν¬ 톡신을 ν•  λ•Œ 처음 μ ‘ν•˜

noahlogs.tistory.com

 

μ°Έκ³ ) https://zwzwzw123-daily-daily.tistory.com/123

 

[CS지식 - κ°œλ°œμƒμ‹] HTTP λ©”μ†Œλ“œ

1. HTTP λ©”μ†Œλ“œ HTTPλŠ” μš”μ²­ λ©”μ„œλ“œλ₯Ό μ •μ˜ν•˜μ—¬, μ£Όμ–΄μ§„ λ¦¬μ†ŒμŠ€μ— μˆ˜ν–‰ν•˜κΈΈ μ›ν•˜λŠ” 행동을 λ‚˜νƒ€λƒ„ 각각의 λ©”μ„œλ“œλŠ” μ„œλ‘œ λ‹€λ₯Έ 의미λ₯Ό κ΅¬ν˜„ν•˜μ§€λ§Œ, 일뢀 κΈ°λŠ₯은 λ©”μ„œλ“œ 집합간에 μ„œλ‘œ κ³΅μœ ν•˜κΈ°λ„ 함

zwzwzw123-daily-daily.tistory.com

 

μ°Έκ³ ) https://developer.mozilla.org/ko/docs/Web/HTTP/Status

 

HTTP μƒνƒœ μ½”λ“œ - HTTP | MDN

HTTP 응닡 μƒνƒœ μ½”λ“œλŠ” νŠΉμ • HTTP μš”μ²­μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆλŠ”μ§€ μ•Œλ €μ€λ‹ˆλ‹€. 응닡은 5개의 그룹으둜 λ‚˜λˆ„μ–΄μ§‘λ‹ˆλ‹€: 정보λ₯Ό μ œκ³΅ν•˜λŠ” 응닡, 성곡적인 응닡, λ¦¬λ‹€μ΄λ ‰νŠΈ, ν΄λΌμ΄μ–ΈνŠΈ μ—λŸ¬, 그리고

developer.mozilla.org