Python 심화 학습7(requests)

CheolSoonKang·2024년 2월 27일

개념정리

목록 보기
17/18

requests란?

  • 파이썬에서 http 통신을 가능하게 해주는 모듈
  • beautifulsoup과 함께 웹 크롤링을 하거나 api 통신이 필요할 때 사용
  • requests 요청에는 크게 네가지 종류의 method가 존재한다
    • GET : 데이터 정보 요청
    • POST : 데이터 생성 요청
    • PUT : 데이터 수정 요청
    • DELETE : 데이터 삭제 요청
  • 서버에서는 응답(response)을 내려주며, 응답은 내용(content)와 상태 코드(status code)를 받아오게 된다.
      • 2xx - 성공
      • 200 : 정상 통신 완료
      • 201 : 정상 생성 완료
    • 3xx : 페이지 리다이렉션
      • 301 : url 변경
    • 4xx : 클라이언트 오류
      • 400 : 클라이언트가 잘못 된 요청을 보냄
      • 401 : 인증되지 않은 사용자
      • 403 : 액세스 권한이 없음
    • 5xx : 서버 오류
      • 500 : 서버에서 처리할 수 없음
      • 502 : 게이트웨이에서 잘못된 응답을 받음

requests 모듈로 request 보내보기

import requests

먼저 requests모듈을 추가해준다.

GET요청

# 통신 할 base url 지정
url = "https://jsonplaceholder.typicode.com/"
#
# 1번 사용자 정보를 받아오기 위해 users/1 경로에 get 요청
r = requests.get(f"{url}users/1")
pprint({
    "contents": r.text,
    "status_code": r.status_code,
})
# result output
"""
{'contents': '{\n'
             '  "id": 1,\n'
             '  "name": "Leanne Graham",\n'
             '  "username": "Bret",\n'
             '  "email": "Sincere@april.biz",\n'
             '  "address": {\n'
             '    "street": "Kulas Light",\n'
             '    "suite": "Apt. 556",\n'
             '    "city": "Gwenborough",\n'
             '    "zipcode": "92998-3874",\n'
             '    "geo": {\n'
             '      "lat": "-37.3159",\n'
             '      "lng": "81.1496"\n'
             '    }\n'
             '  },\n'
             '  "phone": "1-770-736-8031 x56442",\n'
             '  "website": "hildegard.org",\n'
             '  "company": {\n'
             '    "name": "Romaguera-Crona",\n'
             '    "catchPhrase": "Multi-layered client-server neural-net",\n'
             '    "bs": "harness real-time e-markets"\n'
             '  }\n'
             '}',
 'status_code': 200}
"""

POST 요청

# 통신 할 base url 지정
url = "https://jsonplaceholder.typicode.com/"
# 데이터 생성에 사용될 값 지정
data = {
    "name": "sparta",
    "email": "sparta@test.com",
    "phone": "010-0000-0000",
}
# 사용자를 생성하기 위해 users 경로에 data를 담아 post 요청
r = requests.post(f"{url}users", data=data)
pprint({
    "contents": r.text,
    "status_code": r.status_code,
})
# result output
"""
{'contents': '{\n'
             '  "name": "sparta",\n'
             '  "email": "sparta@test.com",\n'
             '  "phone": "010-0000-0000",\n'
             '  "id": 11\n'
             '}',
 'status_code': 201}
"""
profile
소통하며 성장하는 늦깎이 개발자

0개의 댓글