1 λΆ„ μ†Œμš”

πŸ“˜ HTTP μš”μ²­ νŒŒμ‹±μ— λŒ€ν•΄μ„œβ€¦

νŒŒμ‹±μ΄λž€ μ–΄λ–€ 값에 λŒ€ν•΄μ„œ λ‚΄κ°€ μ›ν•˜λŠ” 값을 λ½‘μ•„μ˜€λŠ” λ™μž‘μ΄λΌκ³  생각할 수 μžˆλ‹€.

Http에 λŒ€ν•œ μ •λ³΄λŠ” β€œHttp에 λŒ€ν•΄μ„œβ€¦β€œμ—μ„œ 쑰금 더 μžμ„Ένžˆ κΈ°λ‘ν–ˆλ‹€.

1. Http μš”μ²­ ν˜•μ‹

  1. GET
  2. POST
  3. PUT
  4. DELETE
  5. OPTIONS

1-1. Http μš”μ²­ λ©”μ‹œμ§€μ˜ ꡬ쑰

image

  • request line Http request의 첫 라인이며 3λΆ€λΆ„μœΌλ‘œ κ΅¬μ„±λœλ‹€.
    • Http Method : GET, POSTλ“±μ˜ λ™μž‘ μ •μ˜
    • Request target : requestκ°€ μ „μ†‘λ˜λŠ” uri
    • Http Version
  • request headers request에 λŒ€ν•œ meta정보λ₯Ό λ‹΄κ³ μžˆμœΌλ©°, ν‚€:κ°’ν˜•μ‹μœΌλ‘œ λ˜μ–΄μžˆμŒ.
    • Host : requestκ°€ μ „μ†‘λ˜λŠ” target의 host url
    • accept : ν•΄λ‹Ή requestκ°€ 받을 수 μžˆλŠ” response의 νƒ€μž…
    • user-Agent : μš”μ²­μ„ λ³΄λ‚΄λŠ” ν΄λΌμ΄μ–ΈνŠΈμ— λŒ€ν•œ 정보
    • Content-Length : request λ©”μ‹œμ§€μ˜ 길이
  • request message body request λ©”μ‹œμ§€μ˜ λ³Έλ¬Έ λ‚΄μš©μ„ λ‹΄κ³ μžˆμŒ.
    • μ‹€μ œ λ©”μ‹œμ§€/λ‚΄μš©μ΄ λ“€μ–΄μžˆμŒ
    • xmlμ΄λ‚˜ json데이터가 λ“€μ–΄κ°ˆ 수 있음.
    • GET은 bodyκ°€ λŒ€λΆ€λΆ„ μ—†μŒ

1-2. Http 응닡 λ©”μ‹œμ§€μ˜ ꡬ쑰

image

  • status line reponse의 μƒνƒœ(state)λ₯Ό λ‚˜νƒ€λƒ„.

  • response headers request의 헀더와 동일함
    • responseμ—μ„œλ§Œ μ‚¬μš©λ˜λŠ” 헀더값이 μžˆλ‹€.
      • ex) User-Agent λŒ€μ‹  Server
  • response body μ‹€μ œ μ‘λ‹΅ν•˜λŠ” 데이터λ₯Ό λ‚˜νƒ€λƒ„

2. Http Request νŒŒμ‹±μ½”λ“œ (Python)

Python 3.11.0 을 μ‚¬μš©ν•˜μ—¬ Http μš”μ²­μ— λŒ€ν•œ κ²°κ³Όλ₯Ό νŒŒμ‹±ν•΄λ³΄μž.

# https://foss4g.tistory.com/1617 

import requests
from bs4 import BeautifulSoup

# μ§€μ •ν•œ url에 λ”°λ₯Έ html_doc을 톡해 ν•΄λ‹Ή νŽ˜μ΄μ§€μ˜ html 확인
r = requests.get('https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%9B%94%EB%93%9C%EC%BB%B5')

html_doc = r.text
# print(html_doc)

# html_doc을 Beautiful Soup을 톡해 μ—΄κΈ°
soup = BeautifulSoup(html_doc, 'html.parser')
# print(soup.prettify())

# for link in soup.find_all('a'):
#     print(link.get('href'))

news_tit = soup.findAll("a", {"class":"news_tit"})
# print(news_tit)

# 넀이버 λ‰΄μŠ€ 제λͺ© νŒŒμ‹±
for i in range(len(news_tit)):
    print(news_tit[i].get('title'))

3. Postman

Postmanμ΄λž€ APIκ°œλ°œμ— κ΄€ν•΄ μ—¬λŸ¬ 편의 κΈ°λŠ₯을 μ œκ³΅ν•˜λŠ” νˆ΄μ΄λ‹€.
APIκ°œλ°œμ„ λΉ λ₯΄κ³  μ‰½κ²Œ ν•  수 있게 도와주고, 개발된 APIλ₯Ό ν…ŒμŠ€νŠΈ & λ¬Έμ„œν™”, 곡유 κΈ°λŠ₯ 등이 μžˆλ‹€.
λ‹€μŒμœΌλ‘œ API μš”μ²­μ— λŒ€ν•œ 응닡을 확인할 수 μžˆλ‹€.

3-1. Posman μ‚¬μš©ν•˜κΈ°

www.postman.comμ—μ„œ postman을 λ¨Όμ € λ‹€μš΄ λ°›λŠ”λ‹€.

[μ‹€ν–‰ν™”λ©΄]
image 처음 μ‹€ν–‰ν™”λ©΄μ—μ„œ WORKSPACEλ₯Ό μƒμ„±ν•˜κ³  apiμš”μ²­ ν…ŒμŠ€νŠΈν•œ workspace이닀.
경기도 병원 μœ„μΉ˜μ— λŒ€ν•œ open apiλ₯Ό κ³΅κ³΅λ°μ΄ν„°ν¬ν„Έμ—μ„œ ν‚€ 값을 λ°›μ•„ μ‚¬μš©ν•΄λ³΄μ•˜λ‹€. μœ„ 사진에 검색창 μ˜†μ„ 보면 GET이 μžˆλŠ”λ°, POST, PUTλ“± λ‹€μ–‘ν•œ μš”μ²­λ°©μ‹μ„ μ‚¬μš©ν•  수 있고, μžμ‹ μ΄ μ›ν•˜λŠ” apiλ₯Ό μ „μ†‘ν•˜λ©΄ μ•„λž˜μ— api에 λŒ€ν•œ 데이터가 좜λ ₯λœλ‹€.

νƒœκ·Έ:

μΉ΄ν…Œκ³ λ¦¬:

μ—…λ°μ΄νŠΈ:

λŒ“κΈ€λ‚¨κΈ°κΈ°