ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Django Rest Framework 1.이론2
    [Python,Django] 2020. 3. 14. 00:00

    서버 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로 요청 거부당하는 이유

    메소드가 생략되어있으면 GET요청이다. 로컬호스트의 8000번 포트에 헤더만 보게 요청
    http메소드 예시를 위한 사이트인 example.com 커맨드라인에 요청하면 응답으로 http코드,날짜,html코드 등이 온다.
    form옵션으로 post 요청을 했으나  csrf_token이 없어 거부당하고 403포비든 서버에러를 응답받았다.
    가능한 주소에 다시 form형태로 post로 보내본다."form"프로퍼티에 내용이 들어있다.
    같은 내용이라도 json옵션으로 post요청하면 데이터가 json 프로퍼티에 전해진다.

Designed by Tistory.