我们以在Django框架中使用的图书英雄案例来写一套支持图书数据增删改查的REST API接口,来理解REST API的开发。【此处的model.py中内容,详见Django框架栏目中设置的内容】

在此案例中,前后端均发送JSON格式数据。

# views.pyfrom datetime import datetimeclass BooksAPIVIew(View):"""查询所有图书、增加图书"""def get(self, request):"""查询所有图书路由:GET /books/"""queryset = BookInfo.objects.all()book_list = []for book in queryset:book_list.append({'id': book.id,'btitle': book.btitle,'bpub_date': book.bpub_date,'bread': book.bread,'bcomment': book.bcomment,'image': book.image.url if book.image else ''})return JsonResponse(book_list, safe=False)def post(self, request):"""新增图书路由:POST /books/ """json_bytes = request.bodyjson_str = json_bytes.decode()book_dict = json.loads(json_str)# 此处详细的校验参数省略book = BookInfo.objects.create(btitle=book_dict.get('btitle'),bpub_date=datetime.strptime(book_dict.get('bpub_date'), '%Y-%m-%d').date())return JsonResponse({'id': book.id,'btitle': book.btitle,'bpub_date': book.bpub_date,'bread': book.bread,'bcomment': book.bcomment,'image': book.image.url if book.image else ''}, status=201)class BookAPIView(View):def get(self, request, pk):"""获取单个图书信息路由: GET  /books/<pk>/"""try:book = BookInfo.objects.get(pk=pk)except BookInfo.DoesNotExist:return HttpResponse(status=404)return JsonResponse({'id': book.id,'btitle': book.btitle,'bpub_date': book.bpub_date,'bread': book.bread,'bcomment': book.bcomment,'image': book.image.url if book.image else ''})def put(self, request, pk):"""修改图书信息路由: PUT  /books/<pk>"""try:book = BookInfo.objects.get(pk=pk)except BookInfo.DoesNotExist:return HttpResponse(status=404)json_bytes = request.bodyjson_str = json_bytes.decode()book_dict = json.loads(json_str)# 此处详细的校验参数省略book.btitle = book_dict.get('btitle')book.bpub_date = datetime.strptime(book_dict.get('bpub_date'), '%Y-%m-%d').date()book.save()return JsonResponse({'id': book.id,'btitle': book.btitle,'bpub_date': book.bpub_date,'bread': book.bread,'bcomment': book.bcomment,'image': book.image.url if book.image else ''})def delete(self, request, pk):"""删除图书路由: DELETE /books/<pk>/"""try:book = BookInfo.objects.get(pk=pk)except BookInfo.DoesNotExist:return HttpResponse(status=404)book.delete()return HttpResponse(status=204)

# urls.pyurlpatterns = [url(r'^books/$', views.BooksAPIVIew.as_view()),url(r'^books/(?P<pk>\d+)/$', views.BookAPIView.as_view())
]

测试

使用Postman测试上述接口

1) 获取所有图书数据

GET 方式访问 http://127.0.0.1:8000/books/, 返回状态码200,数据如下

[{"id": 1,"btitle": "射雕英雄传","bpub_date": "1980-05-01","bread": 12,"bcomment": 34,"image": ""},{"id": 2,"btitle": "天龙八部","bpub_date": "1986-07-24","bread": 36,"bcomment": 40,"image": ""},{"id": 3,"btitle": "笑傲江湖","bpub_date": "1995-12-24","bread": 20,"bcomment": 80,"image": ""},{"id": 4,"btitle": "雪山飞狐","bpub_date": "1987-11-11","bread": 58,"bcomment": 24,"image": ""},{"id": 5,"btitle": "西游记","bpub_date": "1988-01-01","bread": 10,"bcomment": 10,"image": "booktest/xiyouji.png"},{"id": 6,"btitle": "水浒传","bpub_date": "1992-01-01","bread": 10,"bcomment": 11,"image": ""},{"id": 7,"btitle": "红楼梦","bpub_date": "1990-01-01","bread": 0,"bcomment": 0,"image": ""}
]

2)获取单一图书数据

GET 访问 http://127.0.0.1:8000/books/5/ ,返回状态码200, 数据如下

{"id": 5,"btitle": "西游记","bpub_date": "1988-01-01","bread": 10,"bcomment": 10,"image": "booktest/xiyouji.png"
}

GET 访问http://127.0.0.1:8000/books/100/,返回状态码404

3)新增图书数据

POST 访问http://127.0.0.1:8000/books/,发送JSON数据:

{"btitle": "三国演义","bpub_date": "1990-02-03"
}

返回状态码201,数据如下

{"id": 8,"btitle": "三国演义","bpub_date": "1990-02-03","bread": 0,"bcomment": 0,"image": ""
}

4)修改图书数据

PUT 访问http://127.0.0.1:8000/books/8/,发送JSON数据:

{"btitle": "三国演义(第二版)","bpub_date": "1990-02-03"
}

返回状态码200,数据如下

{"id": 8,"btitle": "三国演义(第二版)","bpub_date": "1990-02-03","bread": 0,"bcomment": 0,"image": ""
}

5)删除图书数据

DELETE 访问http://127.0.0.1:8000/books/8/,返回204状态码

使用Django开发REST 接口相关推荐

  1. python产品发布会_阅读虫师django开发发布会系统以及django开发Web接口分享

    最近阅读了虫师的书籍,关于虫师分析django Web开发以及django 开发Web接口,通过阅读虫师的书籍,学到了很多东西,在这里分享一下,和简友一起学习和讨论 1.创建项目django-admi ...

  2. 使用Django开发简单接口:文章增删改查

    目录 1.一些准备工作 安装django 创建django项目 创建博客应用(app) 2.models.py 3.django admin 登录 创建超级用户 4.修改urls.py 5.新增文章接 ...

  3. django开发api接口

    环境准备: python3.8 django 3.0.6 pycharm 2020.1 1.准备工作 pip3 install django 2.开始代码 2.1.settiong文件配置 INSTA ...

  4. django开发websocket接口

    ws目录 第三方包安装 pip install channels pip install channels_redis 主目录settings文件配置 #channels添加 INSTALLED_AP ...

  5. html请求接口_python接口自动化测试 - 2.Django开发接口

    要测试接口,首先我们要学会开发一个简单的接口,只有你知道了如何开发,你才能更好的进行测试,才能知道具体哪里最容易出错,从而大大的提高测试的准确性以及覆盖率.所以,我们以Django为例子,开发一个简单 ...

  6. Django rest_framework 后端接口开发 开发与用户相关的一组接口 登录注册与用户信息查询修改

    Django rest_framework 后端接口开发 开发与用户相关的一组接口 Django DRF框架用起来还是有一些难度的,需要做的配置,需要导的包很多,所以需要多多练习才能掌握它的使用.此文 ...

  7. Django之数据接口开发

    文章目录 1.REST REST介绍 HTTP的动词 状态码 2.接口设计开发 基于函数的视图(FBV) 基于类的视图(CBV) 全套接口1:方法重写定制数据 全套接口2:快速开发全套接口 3.下面所 ...

  8. vue-cli4开发手机购物商城东京大药房整站django开发数据库和接口

    vue-cli4打造前端组件式开发 django开发数据库和数据接口 采用前后端分离式开发 带数据库,带定位用户,带支付宝 带手机短信验证码开发(注册登陆等) 带购物商城数据库设计教程 带数据接口开发 ...

  9. 初识Django —Python API接口编程入门

    初识Django -Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言, ...

最新文章

  1. 笔记本通过网线连接并控制工控机
  2. Linux下用iptables做端口映射
  3. webstrom代码检查
  4. 系统提供的按钮和图标
  5. C语言常用宏定义(#define)使用方法
  6. python中判断变量的类型
  7. python矩阵相关操作
  8. 因此,甲骨文杀死了java.net
  9. 面试时会谈薪的人一开口就赢了:让你薪资翻倍的谈薪技巧
  10. java webservice 接收数据_WebService客户端,接收数据解析存入数据库
  11. meterpreter--收集系统信息
  12. Java——can U do
  13. 聊聊 Tomcat 的单机多实例
  14. 更新sqlmap1.5.5版本教程(附带下载地址)
  15. matlab xlsread 日期,为什么Xlsread读取(日期时间)为字符串
  16. 关于keil5开发stc8等51单片机程序和在线调试的步骤
  17. 男朋友智商测试大集结(一):Oracle数据库查询操作练习81题(附答案)
  18. 【HTML基础】acronym和abbr的区别
  19. 第四十六章 SQL函数 DAY
  20. 将颜色值转为rgba值

热门文章

  1. 火爆 GitHub!这个 AI 神器究竟有什么魅力?
  2. 深入浅出,机器学习该怎么入门?
  3. 激发企业大“智慧” | 深度赋能AI全场景 揭秘你不知道的移动云
  4. 机器学习模型五花八门不知道怎么选?这份指南告诉你
  5. DevOps火爆,招人却太难了!
  6. 弃Java、Swift于不顾,为何选Python?
  7. 雷军的100亿计划:不服就干,生死看淡
  8. TensorFlow支持Unicode,中文NLP终于省心了
  9. 一文详解循环神经网络的基本概念(代码版)
  10. AI开发者们,2017年你们过得好吗?