<요약> 

 

1. Httpie 란

2. Httpie 사용법

3. 연습해보자. (example.com)


1. Httpie 란

CLI(command line interface)으로 동작하는 http client 이다.

 

다른 http client로는 웹 브라우저 , javascript등 있다. 

 

 

설치 방법

 

pip install --upgrade httpie

 

 

2. Httpie 사용법

 

httpie의 명령어는 http로 시작한다. 

http [flags] [METHOD] URL [ITEM[ITEM]]

 

  • flags : 옵션 
    - ex. json 형식으로 보낸다.  or html form형식으로 보내는 옵션
  • METHOD : HTTP METHOD
    - ex. POST, GET, DELETE , PUT ...
  • URL : 요청이나 응답의 대상 URL
     
  • ITEM : 처리할 값 (인자)   
    - PUT 혹은 POST에서 인자를 사용할 때는  = 로 표현
    - GET에서 인자를 사용할 때는 == 로 표현 
    - GET은 디폴트값이라 생략 가능 

 3. 연습해보자. 
 
(1) httpie 에서 GET 요청하기 ("보여줘" 요청)

이 도메인 URL 을 사용해서 GET요청을 연습해보겠다.

 

이 url은 example.com  

 

 

 우선  터미널을 열고 httpie를 설치한다.

pip install --upgrade httpie

 

잘 설치되었는지 확인하기 위해 다음 명령어를 입력해보자,. 

http

 

 

잘 설치했다면 이런 결과가 나옵니다. 

 

 

 

이제  위 URL 를 이용해서 httpi GET요청 해보자.

사용법은  위에서 말했듯http [flags] [METHOD] URL [ITEM[ITEM]] 이다. 

http [옵션없음] [get] "example.com" [인자없음]  이렇게 적자면 

http get "example.com"


라고 명령어를 치면 다음 결과가 나온다. 

 

실행 결과 

 

맨 위에 보면 200번대 응답을  받았고 
그외 정보를 받고
밑에 html 코드가 나오는 것을 알 수 있다. 

 

 

이번에 는밑에 나온  html 를 생략하는 옵션을 추가하고 GET 을 요청해보자. 

GET은 디폴트여서 생략가능하다. 

html코드는 뺴는 옵션은  --headers이다. 

 

 

http [--headers] [get(생략)] "example.com" [인자없음] 

http --headers "example.com"

라면 다음과 같이 html이 생략된  결과가 나온다. 

 

실행 결과 

 

(2) httpie 에서 PUT 요청하기 ("수정해죠" 요청)

 

사용법은  위에서 말했듯http [flags] [METHOD] URL [ITEM[ITEM]] 이다. 

 

http PUT example.com a==1 b=2

 

 

결과는 응답없음. timeout.. 

 

 

(3) httpie 에서 DELETE 요청하기 ("지워죠" 요청)

http [flags] [METHOD] URL [ITEM[ITEM]] 를 다음과 같이 적는다. 

http DELETE example.com a==1

 

 

결과는

405 ,, 400번대로 거절당했다

 

(4) httpie 에서 POST 요청하기 ("넣어줘" 요청)

 

- jSON 형식으로  

 

http --json POST example.com a==1 b=2

결과.

잉? 이게 왜 되는거지? 

 

 

- html form 형식으로

 

http --form POST example.com a==1 b=2

  

????

 

 

 

 

더 자세한 자료를 공부하고 싶으면 참고하면 좋을 자료다. 

https://httpie.org/

 

HTTPie – command line HTTP client

CLI HTTP that will make you smile. JSON support, syntax highlighting, wget-like downloads, extensions, and more.

httpie.org

 

'Django > REST Framwork' 카테고리의 다른 글

2. HTTP method  (0) 2019.12.14
1. JSON  (0) 2019.12.14

<요약> 

 

1. server와 Client

2. django에서  HTTP Method

3. django Rest Framework에서 HTTP Method

4. HTTP Response

 

 

 


 

1. Server ,Client

 

웹상에서 통신을 주고받는 주체는 server client이다. 

client : 데이터를 request

server : request 받은 정보를 잘가공해서 처리하는 역할 

 

 

 

 

2. django에서  HTTP Method

이때 웹상에서 통신을 수행할 수 있게 끔 해주는 통신 규약을 HTTP라 한다.

장고에서 지원하는 HTTP 프로토콜 메소드는 크게 두가지가 있다. 

1.GET
2.POST

 

 

GET POST이 두가지의 차이는 다음과 같다. 

GET POST
갖다줘 처리해줘
URL에 데이터 정보를 포함 포함x

즉,같은 URL, view 로직이여도 여도 수행하는 업무가 다를 수 있었다. 

 

 

3. django Rest Framework에서 HTTP Method

 

Method 기능
GET 요청받은 URL의 정보를 검색하여 응답한다.
POST 요청된 자원을 생성 (CREATE) 한다.
PUT 요청된 자원을 수정 (UPDATE) 한다.
DELETE 요청된 자원을 삭제한다.
PATCH 요청된 자원의 일부를 교체(수정)한다
OPTION 웹서버에서 지원되 메소드의 종류 확인

http://example.com/post라는 URL이 존재한다 가정하고
해당 URL은 글들의 목록을 띄워주는 기능을 갖는 페이지다.

 

해당 URL에 

GET으로 요청을 보냈을 때 서버는 글들의 목록을 반환한다.
POST로 요청을 보냈을 때 서버는  새로운 글 작성하도록 한다.

 

예시의 URL이 글의 목록을 띄워주는 URL일 경우 PUT과 PATCH와 같은
Http Method를 가지고 있을 필요가 없다.
모든 URL이 모든 Http Method를 가지고 있을 필요가 없다.

 

 

 

4.HTTP Response

 

Django Rest Framework의 REST API 에서는 JSON을 주고받는다.

서버의 Response에는 아래와 같은 종류가 존재한다.

  • 1XX (정보)
    • 요청을 받았으며 프로세스를 계속한다.
  • 2XX (성공) :
    • 요청을 성공적으로 받았으며 인식했고 수용했다.
  • 3XX (리다이렉션) :
    • 요청을 완료하기 위해 추가 작업 조치가 필요하다.
  • 4XX (클라이언트 오류) :
    • 요청의 문법이 잘못되었거나 요청을 처리할 수 없다.
  • 5XX (서버 오류)
    • 서버가 명백히 유요한 요청에 대해 충족에 실패했다.

 

 

'Django > REST Framwork' 카테고리의 다른 글

3. Httpie  (0) 2019.12.16
1. JSON  (0) 2019.12.14

<요약> 

1. json이란?

2.직렬화(json은 문자열로 보낸다.)

3. json 문법형식

4.json 표현법 예시

5. python에서 직렬화 예시

 

 

1. JSON이란? 

 

 

Java Script Object Notation 의 약자
(자바 스크립트 객체 표기법) 즉, 데이터 표현식이다. 

즉,

데이터 송수신을 자바스크립트 문법으로 표현된 객체로서 수행할 수 있게 하는 가벼운 문자열 데이터 표현식 이다. 

(자바스크립트를 사용하지 않아도 쓸 수 있음) 

(공식문서)

 

 

웹상에서  Client와 Server는 다음과 같은 항목을 주고 받는다. 

1. html (구조를 나타내는)

2. css (스타일을 표현하는)

3. javascript (논리를 구현하는)

 

이런 스타일과 로직 없이 데이터만 주고 받기 위해 JSON을 쓴다. 

 

 

 

2. 직렬화 (json은 문자열로 보낸다.) 

 

JSON으로 데이터를 주고 받을때 그냥 JSON형태로 주고 받아도 괜찮을까? 

JSON은  javascript으로 만든 표현식 (객체)이지만  javascript를 모르는 사람은 어떻게 알 수 있을까? 

 

JSON은 표현하고자 하는 데이터를 문자열로 변환해서 전송을 한다.

이것을 직렬화(Serialization)라고 한다.

때문에 어느 프로그램,언어를 막론하고 데이터를 통신,주고 받을 수 있다.

 

반대로 요청한 데이터를 JSON객체 형태로 받는 것을 역 직렬화 라고 한다. 

 

 


3. JSON 문법 형식 

 

JSON은 python의 Dictionary  비슷하다. 

name : value 로 구성되어 있고, 중괄호 { }를 사용한다. 

숫자, 문자(열), Boolean, 배열, 객체로 구성이 가능하다.

 

예시 구조를 보자. 

json_example = {
    "string_name": "something",
    "number_name": 3,
    "null_name": null,
    "bool_name": true
}

 

 

4. 예시와  JSON을 직렬화로 보내기

 

일기 no.1

제목 : 오늘 일찍 일어났다. 
본문 : 일찍 졸렸다. 

 

 

라는 예시를 JSON 형식으로 나타내면 다음과 같다. 

{
    "id" : 3,
    "title : "오늘 일찍 일어났다.",
    "body" : "오늘 일찍 졸렸따." 
}

 

 

이 예시를 그냥 보내면 언어 막론하고 다 알아볼까? 
자바스크립트를 문자열로 직렬화해줘서 보내야 한다. 

 

정리하자면,
데이터를 보낼 때 JSON을 문자열로 바꾸어 보내고

데이터를 받을 떄 문자열을 JSON으로 바꾸어 받는다. 

 

5. Python 에서 JSON 다루기

 

python에서 JSON을 다루려면 먼저 맨위에 import json을 써줘야 한다. 

 

import json

 

 

다음과 같이'diary'라는 이름의 파이썬 자료형인 딕셔너리가 있다. 

 

diary = {
    "id": 3,
    "title": "Hi orange",
    "body": "good",
}

print(diary)
print(type(diary))

 

output

{'id': 3, 'title': 'Hi orange', 'body': 'good'}
<class 'dict'>

 

 

이것을 직렬화 해주려면 json.dums()를 써주면 된다. 

 

diary_s =  json.dumps(diary)
print(diary_s)
print(type(diary_s))

 

output

{"id": 3, "title": "Hi orange", "body": "good"}
<class 'str'>

 

보시다시피 자료형이 딕셔너리에서 문자열로 바뀐 것을 볼 수 있다. 

 

역직렬화는 json.loads()를 써주면 된다. 

 

diary_back = json.loads(diary_s)
print(diary_back)
print(type(diary_back))

 

output

 

{'id': 3, 'title': 'Hi orange', 'body': 'good'}
<class 'dict'>

'Django > REST Framwork' 카테고리의 다른 글

3. Httpie  (0) 2019.12.16
2. HTTP method  (0) 2019.12.14

+ Recent posts