django restful api接口优化

老规矩,图来;源自网络,侵权立删:

                                      

 

前言

  系列文章:

  《django入门:环境及项目搭建》

  《django入门:数据模型》

  《django入门:视图及模版》

  《django入门:Admin管理系统及表单》

  《django入门:通用视图类重构视图》

  在《用django写接口(入门篇)》提到这篇会讲 views 的代码优化,在这之前,我们先适当了解下 DRF 中的 Request 和 Response。

  Request 继承 HttpRequest,里面有个 request.data 属性,可以处理任意数据,例如 'POST','PUT','PATCH',其用法类似表单中的 request.POST (参考 django 表单部分)

  Response 是一种 TemplateResponse 采用未呈现的内容,通过内容协商来确定正确的内容类型以返回给客户端,用法直接 return Response(data) 即可

  了解完 Request 和 Response 我们将分别通过 @api_view,APIView 和通用视图类对 view 进行一些改造

  api_view 注解重构

  # ....import 省略
# 将该视图的请求方法写在注解中,表示该接口只接受列表内的请求方式
@api_view(['GET', 'POST'])
def post_list(request):
if request.method == 'GET':
posts = Post.objects.all()
serializer = PostSerializer(posts, many=True)
# 通过 Response 展示相应的数据
return Response(serializer.data)
elif requets.method == 'POST':
serializer = PostSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
# 引入 status 模块,比数字标识符更加直观
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

  然后运行项目,输入网址后,所展示的界面和之前的不同了,多了以下部分

  HTTP 200 OK
Allow: GET, POST, OPTIONS
Content-Type: application/json
Vary: Accept

  这些返回项,而且页面也不是 json了

  

  优化后的列表接口信息

  我们继续做一些修改,在 post_list 函数中加入 format 参数,默认值设置为 None,接着我们对 url 也做一些修改,通过format_suffix_patterns函数对接口返回的信息进行一些处理

  
app_name = 'api'
urlpatterns = [
# url(r'^posts/\$', views.post_list, name='api_posts'),
url(r'^post/(?P<pk>[0

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值