GET & POST

‍박소연·2022년 9월 10일
0

Django

목록 보기
7/10

GET

클라이언트의 데이터를 URL에 붙여서 보낸다.

www.velog.com?id=velog&pass=1234

URL 뒤에 ? 마크를 통해 URL의 끝을 알리면서 데이터 표현의 시작점을 알린다. 데이터는 key와 value 쌍으로 넣어야한다.

Query parameter 처리 방법

Query parameter

사용자가 입력 데이터를 전달하는 방법 중 하나로, url 주소에 미리 협의된 데이터를 파라미터를 통해 넘기는 것을 말한다.

백엔드에서 받는 방법

장고 기능으로 인해 쿼리 parameter의 key와 value는 request의 GET 객체로 쿼리 딕셔너리로 담겨서 들어온다.

#views.py
class ExamView(View):
    def get(self, request):
        pass = request.GET.get('pass', None)
        data = Exam.objects.get(password=pass)

        return JsonResponse(...)

request의 GET 객체에서 get method를 이용해서 key값인 pass에 해당하는 value를 갖고온다. 없으면 None을 갖고와서 에러를 줄여주자. 그리고서 DB에서 필요한 데이터를 가지고 와서 가공해준 뒤 반환해주면 된다.

request.GET vs request.GET.get()

request.GET은 GET으로 받는 파라미터들을 다 포함하는 딕셔너리 객체이다.
get() 메서드는 key 값이 딕셔너리 안에있으면 value값을 리턴해준다. 키 값이 존재하지 않으면 디폴트값인 None을 리턴한다.
request.GET.get()은 위 두 개념을 합친것으로 GET 요청이 접근할 수 있는 key와 value 값을 이용한다.

url parameter 처리 방법

백엔드에서 특정 endpoint를 지정하지 않고, 프론트엔드가 보내는 특정 string이나 int를 path안의 parameter로 받아 view로 보내는 방식이다.

urlpatterns = [
    path('/<str:target_code>', AreaView.as_view())
]

class AreaView(View):
    def get(self, request, target_code=''):

view 클래스 함수에서 self와 request외에 다른 인자를 갖게된다. 그 인자값이 endpoint가 된다.

url parameter는 인자가 없으면 안되고, 인자값으로 확실한 구분이 가능한 경우에 주로 사용한다. 그에 반해 query parameter는 여러개의 조건이 결합될 때 주로 사용한다.

POST

POST 방식은 GET 방식과 달리 데이터 전송을 기반으로 한 request method 이다. POST 방식은 URL이 아니라 BODY에 데이터를 넣어서 보낸다. 데이터는 key와 value 쌍으로 넣어야한다.

JSON 처리 방법

아래와 같이 프론트엔드에서 BODY에 JSON 형태로 request를 보내게 된다.

{
    "user_id": "test1",
    "password": "qwer1234!",
    "name": "test",
    "birth_date": "2020-05-01",
    "phone": "010-0000-0000",
    "email": "test@naver.com"
}
views.py

data = json.loads(requests.body)

request의 BODY에 담겨서 오는 내용이 JSON 형식이면, JSON 형식의 string을 파이썬 딕셔너리로 변경해서 data라는 변수에 저장한다.

0개의 댓글