问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Django REST framework框架之GET, POST, PUT, PATCH, DELETE等API请求接口设计

发布网友 发布时间:2022-12-21 09:44

我来回答

1个回答

热心网友 时间:2023-10-12 01:27

一、API接口功能需求:设计一些接口URL,让前端/客户请求这个URL去获取数据并显示,更改数据(增删改查),达到前后端分离的效果

二、设计逻辑:通过http协议请求方式GET、POST、PUT、PATCH、DELETE设计符合RESTful规范的api接口也就是URL

三、简易源码:

3.序列化serializers
#导入模型类和rest_framework序列化模块serializers
from .models import Article
from rest_framework import serializers

#定义序列化类,使用继承ModelSerializer方法
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article #指定序列化的模型类
fields = '_ all _' #选取序列化字段,此处可自行选取字段

4.视图函数views
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from .models import Article
from .serializers import ArticleSerializer
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
#调用csrf装饰器csrf_exempt模块,解决跨域访问问题
#JSONRenderer它将Python的dict转换为JSON返回给客户端
#JSONParser 负责将请求接收的JSON数据转换为dict

#写法一
#在需要跨域的视图上调用装饰器@csrf_exempt
@csrf_exempt
def article_list(request):
if request.method == 'GET':
arts = Article.objects.all() #获取模型类数据
ser = ArticleSerializer(instance=arts,many=True) #序列化数据instance
#下一步用rest_framework方法里的JSONRenderer方法渲染数据
json_data = JSONRenderer().render(ser.data)
return HttpResponse(json_data,content_type='application/json',status=200)

#写法二
class JSONResponse(HttpResponse):
def _ init (self,data,**kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self)._ init (content,**kwargs)

#根据id进行增删改操作接口
@csrf_exempt
def article_detail(request,id):
try:
art = Article.objects.get(id=id)
except Article.DoesNotExist as e:
return HttpResponse(status=404)

备注:
*写法二中定义JSONResponse类将返回的数据data与content_type返回类型做了封装
*API接口
GET/POST
http://127.0.0.1/api/articles
GET/PUT/PATCH/DELETE
http://127.0.0.1/api/articles/1
*Postman测试效果图
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
怎么描写小猫呢? 什么梦预示正缘要出现 壳外电场分布为什么与壳内电荷的位置无关啊 为什么带电球壳的内部场强处处为零? 电荷内或外感应球壳,球壳内部场强是否处处为零 win11回收站图标隐藏方法-win11回收站怎么隐藏 Windows 11回收站不见了怎么办_如何在Windows 11中恢复回收站图标 Win11回收站图标显示方法 win11显示回收站的方法_win11怎么显示回收站 华为荣耀5X评价,缺点,参数 到底怎样才能消除额头上的痘痘 格子长裙怎么搭配 格子长裙搭配图片 周慧敏仿佛冻龄,穿格纹裙依然是港风女神,她是如何将格纹穿出时尚感的? 起的结构和部首是什么 温州养老保险缴费基数 宝宝食欲差是什么原因 有没有好用的手机放火墙 鸭舌的两种特色美味的做法推荐 一菜两吃之鸭舌篇怎么做 get plus for adobe是什么 灵越14plus独显直连 小米蛋糕的做法小米蛋糕如何做 潮汕文化特色对联有哪些 潮汕农村民居大门的对联 潮汕一老厝大门对联,又火了 河南安阳至义乌托运部在那里 高一物理位移应用题。。。 高一位移物理题 现金规划 1.为李先生家庭进行现金需求分析; 2.选择合适的现金规划工具。 理财作业,希望大家帮帮忙? 2020年12月王者什么时候赛季更新 王者什么时候更新 头顶王字往下看,目正不斜、望世界,拆一个什么字? 小鸡不消化 不知道鸡吃了什么东西在嗉子里消化不掉怎么办? 4g是什么时候开始的 4g的简单介绍 beatsstudio3带脖子上好看吗 蚕蛹的营养价值和蚕蛹的食用功效 怎么吃好 天津碧桂园有几个楼盘 三亚2012年之前建的碧桂园有别墅吗 碧桂园森林城市分四个岛哪个是岛1哪个是岛2哪个是岛3哪个是岛4 朋友们问下碧桂园森林城市是岛屿来的吗,那里适合居住吗? 碧桂园中央公园项目周边有什么配套? ps通道在哪? 在线ps通道面板在哪 只看楼主 回复 恶魔城白夜协奏曲 马克西姆怎么打最后的BOSS? 恶魔城白夜协奏曲我用金手指把伯爵的碎片收集齐了怎么伯爵的门还 打不开啊 恶魔城 -白夜协奏曲 里城最后中间那个BOSS门怎么打开 求迪克牛仔-三万英尺音乐百度云网盘下载 有没有失忆的纯爱小说,最好是古风的