[Django] request(get, GET, POST) vs. requests(post, get,・・・)

happy tiger·2022년 8월 17일
0

Django

목록 보기
3/3
post-thumbnail
post-custom-banner

request vs. requests

request는 요청 그자체가 아니라, 들어온 http 요청을 이용하기 쉽도록 django가 잘 다듬어 만들어 준 객체이다.
requests는 파이썬 모듈로, HTTP 요청을 보낼 때 사용한다.

자세한 설명은 아래에서 이어가겠다.

request의 get, GET, POST

.get()

dictionary.get(keyname, value)

  • .get()은 django의 메소드가 아니라, python의 메소드이다.
  • get 메소드는 사전형 객체에서 지정된 키의 값을 반환한다.
    즉, 사전형이 아니면 에러가 발생한다.
  • dictinoary.get(keyname)인 경우, 인자로 주어진 keyname을 가진 key가 존재하지 않으면 None을 반환한다.
  • dictionary.get(keyname, value)인 경우, keyname을 가진 key가 존재하지 않을 때 value를 반환한다.

그렇다면 request.get()은 어떨까?

  • django의 request의 type은 WSGI Request로, 사전형이 아니다. 고로, 작동하지 않고 에러가 발생한다.
    이해를 돕기 위해 print(request)를 실행시, 출력 내용을 첨부한다.

.GET(), .POST()

request.GET(keyname) & request.POST(keyname)

  • .GET().POST()django의 속성이다.
  • GET / POST 메소드로 들어온 요청을 받는다.
  • request를 dictioinoary type(QueryDict)으로 변환한다. 아래는 print(request.GET)의 출력이다.
  • keyname을 가진 key가 존재하면 해당 key에 대한 값을 반환하고, 존재하지 않을 경우 KeyError가 발생한다.

그래서 결론은 ?

request.GET.get(keyname) or request.POST.get(keyname)

  • GET/POST를 이용하여 request를 Quertdict 형태로 변환한다.
  • 에러 발생을 막기 위해, get 메소드를 사용하여 해당 key가 없을 경우 None으로 반환 된다.

requests의 get, post, ・・・

requests.methodname(params)

requests는 python의 모듈로, httpie나 Postman의 역할을 한다. 인자에 포함된 url로 methodname에 해당하는 http 요청을 보내, 응답을 담아오는 역할을 한다.

예시로, 아래 코드를 보자.
user_kakao_info = requests.get("https://kapi.kakao.com/v2/user/me", headers=headers).json()
간단히 설명하자면, "https://kapi.kakao.com/v2/user/me" url로 headers를 헤더에 담아 get요청을 보내고, 받은 응답을 json타입으로 변환하여 user_kakao_info 변수에 저장한다는 것이다.

profile
호기심·끈기·성장·발전·행복·협력 ٩(๑•̀ㅂ•́)و
post-custom-banner

0개의 댓글