클라이언트의 데이터를 URL에 붙여서 보낸다.
www.velog.com?id=velog&pass=1234
URL 뒤에 ? 마크를 통해 URL의 끝을 알리면서 데이터 표현의 시작점을 알린다. 데이터는 key와 value 쌍으로 넣어야한다.
사용자가 입력 데이터를 전달하는 방법 중 하나로, 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은 GET으로 받는 파라미터들을 다 포함하는 딕셔너리 객체이다.
get() 메서드는 key 값이 딕셔너리 안에있으면 value값을 리턴해준다. 키 값이 존재하지 않으면 디폴트값인 None을 리턴한다.
request.GET.get()은 위 두 개념을 합친것으로 GET 요청이 접근할 수 있는 key와 value 값을 이용한다.
백엔드에서 특정 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 방식은 GET 방식과 달리 데이터 전송을 기반으로 한 request method 이다. POST 방식은 URL이 아니라 BODY에 데이터를 넣어서 보낸다. 데이터는 key와 value 쌍으로 넣어야한다.
아래와 같이 프론트엔드에서 BODY에 JSON 형태로 request를 보내게 된다.
{
"user_id": "test1",
"password": "qwer1234!",
"name": "test",
"birth_date": "2020-05-01",
"phone": "010-0000-0000",
"email": "test@naver.com"
}
data = json.loads(requests.body)
request의 BODY에 담겨서 오는 내용이 JSON 형식이면, JSON 형식의 string을 파이썬 딕셔너리로 변경해서 data라는 변수에 저장한다.