request.get과 request.GET의 차이가 뭘까?

이민석·2022년 4월 26일
0

method

목록 보기
1/1

서두

이번 온보딩 과제를 하면서 어렴풋이 이런 메소드야 정도로 알고있던 get과 GET의 차이에 대해 정확히 알아야겠다는 생각이 들었다. API를 작성하는데 내가 원하지 않던 결과값이 한 번씩 나오다 보니 정확히 이해하지 않고 쓰는 메소드는 결국에 좋지 않은 결과를 불러오는 것 같다. 요즘 프로그래머스 1일 1알고리즘을 커밋하는데 hash에 대해서도 찾다보니 적용에 더욱 도움이 된 것 같다.

request.get

python 자체 메소드인 get

get은 python에서 제공하는 메소드 중에 하나이다. 사전형 객체의 데이터를 받아서 Key값을 입력할 경우 Value값을 반환해 주는 메소드이다.

get 메소드는 사전형 객체만 사용할 수 있다는 점을 기억하자!
a = {1:'a', 2:'b', 'c':3}

a.get(1)
>>>'a'

기본 형태는 아래와 같다. 물론 a[1]의 형태로도 같은 결과값을 얻을 수 있다.

다음에 GET에 대해 설명할 때 나오겠지만, python의 get 메소드는 Key값이 존재하지 않을 경우 default값으로 None을 반환 해주거나 사용자가 따로 설정한 값으로 Value값이 반환된다.

a = {1:'a', 2:'b', 'c':3}

a.get(3) or a.get(3, None)
>>>None

a.get(3, 'z')
>>>'z'

위와 같이 request.get(a, b) 에서 a가 dictionary의 Key값이 되고, b가 Key값이 존재하지 않을 경우 반환되는 Value값이 된다.

request.GET

django에서 사용하는 request.GET

request.GET은 http통신에서 사용할 수 있다. request는 http에서 request를 보냈을 때 request에 담긴 Json 데이터를 이용하여 django가 만든 객체이고, request.GET을 통해 request를 사전형 객체로 만들 수 있다.

http:localhost:8000/user?name=minseok

def get(request):
    name = request.GET['name']
    return name
>>> 'minseok'

def get(request):
    age = request.GET['age']
    return age
>>>MultiValueDictKeyError

위와 같이 사용할 수 있다. 하지만, request.GET은 get 메소드와 달리 default 값이 존재하지 않는다. Key값이 존재하지 않을 경우에는 에러가 발생한다. 상황에 따라 Key값이 존재하지 않아도 default값을 필요로 하는 경우가 있는데, 그 때 사용하는 것이 request.GET.get이다.

http:localhost:8000/user?name=minseok

def get(request):
    age = request.GET.get('age')
    return age
>>>None

def get(request):
    age = request.GET.get('age', '30')
    return age
>>>30

http request를 request.GET을 통해 사전형 객체로 만들고, get 메소드를 사용하여 python의 get처럼 사용할 수 있다.

코드 하나하나가 어떤 의미를 담고 있는지를 알아보고 상황에 따라 필요한 곳에 적재적소로 활용하자.

[출처]

Querydics 객체
get과 GET의 차이

profile
오늘은 무엇을 배울까

0개의 댓글