[Day18] - Django-REST-Framework API 呼叫及介面操作

昨天我们使用 DRF 实作出了第一个 API -- 商品查询 API 。相信大家都有感到成就感吧!以後就可以跟人炫耀说你会用Python 建立 API 了!但其中一些部分相信大家应该是似懂非懂的状态吧,我们就一步步来带大家细部的说明。今天首先来说明怎麽样使用这个API 以及如何使用 DRF 自备的 UI 介面。

呼叫 API

在前一篇教学我们使用的 class 为 modelviewset , 此 viewset已有内建一些操作的功能可以供我们呼叫
详细资料可以参考:

https://www.django-rest-framework.org/api-guide/viewsets/#modelviewset

GET /products/

我们使用 Python 对我们的 API 进行呼叫,
我们可以看到他回传资料库当中储存的资料:

>>> import django
>>> import requests
>>> r = requests.get('http://127.0.0.1:9000/products/')
>>> print(r.text)
[{"id":1,"name":"test","uploader":"tt","status":"tt","description":"tt","view":3,"price":4},{"id":2,"name":"test","uploader":"tt","status":"tt","description":"tt","view":3,"price":null},{"id":3,"name":"test","uploader":"tt","status":"tt","description":"tt","view":3,"price":null}]
>>>

POST /products/

透过 POST 新增 product 资料,我们一样透过 Python 来进行操作:

>>> r = requests.post('http://127.0.0.1:9000/products/', data = {'name':'test1','uploader':'jimmy'})
>>> print(r.text)
{"id":4,"name":"test1","uploader":"jimmy","status":"NEW","description":null,"view":null,"price":null}
>>> r = requests.get('http://127.0.0.1:9000/products/')
>>> print(r.text)
[{"id":1,"name":"test","uploader":"tt","status":"tt","description":"tt","view":3,"price":4},{"id":2,"name":"test","uploader":"tt","status":"tt","description":"tt","view":3,"price":null},{"id":3,"name":"test","uploader":"tt","status":"tt","description":"tt","view":3,"price":null},{"id":4,"name":"test1","uploader":"jimmy","status":"NEW","description":null,"view":null,"price":null}]
>>>

图形介面

GET /products

在浏览器中输入网址 127.0.0.1:9000/products/ ,会显示 API 的 UI 画面

https://ithelp.ithome.com.tw/upload/images/20211001/20140477AwwZEEYPvj.png

上面的资讯便等於我们用程序 GET /products/ 所取得的资料,只是画面更易读且美观。

其中右上角可以设定显示方式:

https://ithelp.ithome.com.tw/upload/images/20211001/20140477wHZt7A8IJX.png

  • api 现在初始之图形介面
  • json 以json档案格式呈现结果(如下图)
    https://ithelp.ithome.com.tw/upload/images/20211001/20140477H4ADsHUS28.png

POST /products/

我们也可以在这介面直接进行 POST 的操作,在 GET资料呈现的下方,有一个区块让开发者可以填入资料,其中包含两种方法:

  • HTML form
    透过 form 的直观介面,输入栏位,程序会自动整理之後 POST 给 Server
    https://ithelp.ithome.com.tw/upload/images/20211001/201404770hqE0oj8XU.png

  • RAW data
    透过编码介面,编写欲传送之资料,而後进行 POST
    https://ithelp.ithome.com.tw/upload/images/20211001/20140477tUUg0eUuMY.png

结语

DRF 是为了 REST 而生的框架,因此在设计上,实在是设计的让使用者非常方便可以进行开发。透过图形介面,也能够很直观地进行 debug 及确认资料。我自己本人是很喜欢这个 UI 介面的功能,因为不仅是自己 debug,有时候在和人沟通时能够更具体快速的透过 UI 介面彼此理解~


<<:  Day16-Vue CLI 环境设定与打包部属

>>:  LineBot - 身份验证

Day 17 - UML x Interface — FormControl

上一章是在讲跟 Input 相关的表单元件会使用 TextField 来给定表单会用到的 requ...

如何用 SQL 去除重复资料 : Distint

简单分享个简单但之前不知道的 SQL,还是 PM 跟我讲的 X) 情境 有哪些供应商有订单状态为 2...

[Day21] 第二十一章 - 使用Ajax来做登入API界接

前言 昨天我们把登入页面套上了bootstrap 我们这次把jqury补上去 接者透过ajax做登入...

[DAY 29] Google 提供的图片转文字

现在有一些还不错的网站有在蒐集各校段考考古题 例如:全国中小学题库网、昌爸工作坊 等等 由於我国着作...

Day 2 我要开始学了

Hi 大家好~ 在这边平常我列出我最近想学跟正在学的一些技术 React Testing Libra...