https://ungodly-hour.tistory.com/20
Migrate
서버를 실행하기 전, DB를 migrate 한다. (최초 실행 혹은 애플리케이션의 Model이 변경될 경우, 해당 변경을 DB에 알려주기 위함)
(env) tutorial $ python manage.py migrate
Model이 변경된 경우에는 migrate을 수행하기 전, 아래와 같이 변경점에 대한 migration 파일을 생성해야 한다.
(env) tutorial $ python manage.py makemigrations
생성된 migration 파일은 애플리케이션 디렉토리(myapp) 하위 migrations 디렉토리에 저장된다.
Run Server
이제 다음과 같이 서버를 실행 보자.
(env) tutorial $ python manage.py runserver
우리가 사용한 Viewset은 기본적으로 Browsable API를 지원하므로, CURL 등 다양한 클라이언트로도 API 사용이 가능하지만, 웹 브라우저를 이용하여 API 사용도 가능하다. 웹 브라우저를 통해 API root(/)로 접속하여 다음과 같이 제공되는 API를 확인할 수 있다.
Testing Our APIs
이제 구현한 API가 정상적으로 동작하는지, HTTPie client를 이용하여 확인해 보자. HTTPie의 자세한 사용법은 공식 홈페이지 🏠 https://httpie.org/ 를 통해 확인할 수 있다.
POST
developer 이름의 그룹과 Tom이라는 사용자를 추가해 보자.
$ http POST 127.0.0.1:8000/groups/ name=developer
HTTP/1.1 201 Created
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 60
Content-Type: application/json
Date: Tue, 01 Sep 2020 00:57:10 GMT
Location: http://127.0.0.1:8000/groups/1/
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.9
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
{
"name": "developer",
"url": "http://127.0.0.1:8000/groups/1/"
}
$ http POST 127.0.0.1:8000/users/ username=Tom email=tom@example.com
HTTP/1.1 201 Created
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 95
Content-Type: application/json
Date: Tue, 01 Sep 2020 00:59:54 GMT
Location: http://127.0.0.1:8000/users/1/
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.9
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
{
"email": "tom@example.com",
"groups": [],
"url": "http://127.0.0.1:8000/users/1/",
"username": "Tom"
}
GET
사용자와 그룹 리스트를 가져오자.
$ http GET 127.0.0.1:8000/groups/
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 62
Content-Type: application/json
Date: Tue, 01 Sep 2020 01:00:34 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.9
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
[
{
"name": "developer",
"url": "http://127.0.0.1:8000/groups/1/"
}
]
$ http GET 127.0.0.1:8000/users/
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 97
Content-Type: application/json
Date: Tue, 01 Sep 2020 01:00:38 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.9
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
[
{
"email": "tom@example.com",
"groups": [],
"url": "http://127.0.0.1:8000/users/1/",
"username": "Tom"
}
]
PUT
Tom의 사용자 정보를 수정하여 그룹 정보를 추가해 보자.
$ http PUT 127.0.0.1:8000/users/1/ username=Tom email=tom@example.com groups:='["http://127.0.0.1:8000/groups/1/"]'
HTTP/1.1 200 OK
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Length: 128
Content-Type: application/json
Date: Tue, 01 Sep 2020 01:03:07 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.9
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
{
"email": "tom@example.com",
"groups": [
"http://127.0.0.1:8000/groups/1/"
],
"url": "http://127.0.0.1:8000/users/1/",
"username": "Tom"
}
DELETE
Tom 사용자 정보를 삭제해 보자.
$ http DELETE 127.0.0.1:8000/users/1/
HTTP/1.1 204 No Content
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Length: 0
Date: Tue, 01 Sep 2020 01:06:18 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.9
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
$ http GET 127.0.0.1:8000/users/
HTTP/1.1 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Length: 2
Content-Type: application/json
Date: Tue, 01 Sep 2020 01:06:37 GMT
Referrer-Policy: same-origin
Server: WSGIServer/0.2 CPython/3.6.9
Vary: Accept, Cookie
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
[]
'일하는 > Cloud, Web' 카테고리의 다른 글
Django REST Framework : (2) Requests and Responses (0) | 2020.09.02 |
---|---|
Django REST Framework : (1) Serialization (0) | 2020.09.02 |
마이크로 서비스 아키텍처 (Microservices Architecture: MSA) (0) | 2020.09.01 |
Django REST Framework : Tutorial (2) (0) | 2020.08.31 |
Django REST Framework : Tutorial (1) (0) | 2020.08.31 |