서버 HTTP Request&Response
:HTTP프로토콜 기반의 통신을 수행할 때 오고가는 request&response 메소드와 종류
-Django는 클라이언트와 CSS,html,JS를 주는 반면,
-DRF는 API서버로서 HTTP프로토콜 기반의 JSON형식의 데이터를 클라이언트에게 준다.
클라이언트로부터 서버로 들어오는 응답 또한 JSON 형태로 HTTP상태코드를 준다(2XX,4XX:등)
-서버와 클라이언트 사이의 통신 규약인 HTTP
-Restful Framework가 HTTP Request Method(GET,POST,PUT,DELETE,PATCH,OPTION)중심이다.
HTTP Request Method 비교
GET vs. POST, PUT vs. PATCH
GET:갖다줘,URL입력 데이터 뜸
POST:처리해줘
예)모델 폼을 사용한 view에서 if(request.method=="POST")입력한 내용 처리
else:빈 입력공간 갖다주기
=>같은 페이지에도 요청에 따라 다른 결과를 보여주는 것
PUT:요청한 자원 전체를 수정
PATCH:요청한 자원 일부를 수정
*같은 페이지에도 요청에 따라 다른 결과를 보여주는 것
어떤 페이지에 필요에 따라 특정 요청을 받아 다른 결과를 보여주도록 할 것이다.
예)blog/posts-GET(모든 글 보기),POST(글 작성)
blog/posts/1-GET(1번글 보기),PUT(PATCH)(1번글 수정),DELETE(1번글 삭제)
클라이언트에서 전해주는 response
httpie
HTTP요청과 응답을 CLI(커맨드라인)으로 보여주는 파이썬 기반 프로그램 (CommandLine으로 동작하는 HTTP Client
-대표적인 HTTP Client는 Web Browser,JS,Postman(GUI)가 있는데 HTTPie는 서버에서 넘오는 데이터를 헤더패킷과 함께 보기위해 사용하는 것!)
http 메소드들이 서버와 클라이언트 사이에 전달됨을 볼 수 있도록 httpie를 사용해보자.
<설치>
pip install --upgrade httpie
<사용>
-httpie 명령어는 http 키워드로 시작
-형식:
http [flags] [METHOD] URL [ITEM[ITEM]]
-flags:옵션,어떤 형식으로 보낼지(json,form형식 등)정하는
-HTTP Method
-URL:요청이나 응답이 되는 URL
-ITEM:인자.처리할 데이터
POST,PUT요청:=로 표현
GET요청:==로 표현(*Method에서 GET은 생략가능)
<예시>
GET요청:
http (GET) 대상주소 GET인자==값
PUT요청:
http PUT 대상주소 GET인자==값 PUT인자=값
(GET인자가 있으면 쓰고 없으면 안쓴다.PUT인자도 마찬가지)
DELETE:
http DELETE 대상주소 GET인자==값 PUT인자=값
(GET인자가 있으면 쓰고 없으면 안쓴다.PUT인자도 마찬가지)
POST요청:2가지 형식에 따라 방법도 2가지
-Json형식의 요청:
http --json POST 대상주소 GET인자==값 POST인자=값
-HTML form형식의 요청:
http --form POST 대상주소 GET인자==값 PUT인자=값
(GET인자가 있으면 쓰고 없으면 안쓴다.PUT인자도 마찬가지)
*csrf_token은 프로젝트 폴더의 settings.py에 MIDDLEWARE=[]에 있다
장고에서 보안을 위해 기본적으로 있다.
httpie에서 post나 delete요청을 했을때 40X로 요청 거부당하는 이유
'[Python,Django]' 카테고리의 다른 글
Django Rest Framework 3. view of DRF (0) | 2020.03.17 |
---|---|
Django Rest Framework 2.실습-Serializer,ViewSets (0) | 2020.03.16 |
Generic View (0) | 2020.03.13 |
Django Rest Framework 0.이론1 (0) | 2020.03.13 |
Anaconda 에서 vs code 에디터 사용하기 (0) | 2020.03.06 |