Restful API接口规范(以Django为例)
Restful API接口规范(以Django为例)
Restful API的接口架构风格中制定了一些规范,极大的简化了前后端对接的时间,以及增加了开发效率
- 安全性保证–使用https
- 路径中带 api标识
- 路径中带版本号
- 数据即资源,通常使用名词操作
- 请求方式决定操作资源的方式
- get 获取数据
- post 增加数据
- put 修改数据
- delete 删除数据
- 响应状态码
- http响应状态码:1 2 3 4 5
- 自己定制的状态码
- 响应中带提示
- msg
- 请求地址中带查询参数–》只针对于查询所有
- 响应中带链接地址
- 操作符合如下规范
- 查所有: 数组 列表
- 查单条: 对象
- 新增: 返回新增的对象
- 删除:空文档
- 修改:返回修改后的对象
Restful API与传统设计的区别
在之前的url设计中,我们通常会这么写
-
http://localhost:8000/get(查询用户) -
http://localhost:8000/add(新增用户) -
http://localhost:8000/update(更新用户) -
http://localhost:8000/detele(删除用户)
即所有交互全部在后端执行,request请求的方法全部为get或post方法,
因此需要在后端进行各种校验和if判断非常繁琐
根据Restful API接口规范修改
-
http://localhost:8000/api/(查询用户)- request请求方法:GET
-
http://localhost:8000/api/(新增用户)- request请求方法:POST
-
http://localhost:8000/api/id/(更新用户)- request请求方法:PUT
-
http://localhost:8000/api/id/(删除用户)- request请求方法:DELETE
根据请求方式在后端执行不同的代码块,后端无需再对数据类型再次校验
示例
以Django框架为示例:
根据不同路由执行方法
# urls.py
urlpatterns = [path('admin/', admin.site.urls),path('find_all/', app.views.find_all),path('find/', app.views.find),path('insert/', app.views.insert),path('delete/', app.views.delete),path('change/', app.views.change),
]
# views.py
def find_all(request):if request.GET.get('data') == 'find_all':response = {'code': '200', 'msg': "查询成功", 'results': results}response = json.dumps(response)return JsonResponse(response, safe=False)return HttpResponse('查询所有')def find(request):if request.GET.get('data') == 'find':response = {'code': '200', 'msg': "查询成功"}response = json.dumps(response)return JsonResponse(response, safe=False)return HttpResponse('查询单个')def insert(request):if request.method == 'POST':response = {'code': '200', 'msg': "添加成功"}return JsonResponse(response, safe=False)return HttpResponse('新增一个')def delete(request):if request.method == 'POST':response = {'code': '200', 'msg': "删除成功"}return JsonResponse(response, safe=False)return HttpResponse('删除一个')def change(request):if request.method == 'POST':response = {'code': '200', 'msg': "修改成功"}return JsonResponse(response, safe=False)return HttpResponse('修改一个')
根据Restful API规范修改后的示例
# urls.py
urlpatterns = [path('admin/', admin.site.urls),path('app/', app.views.task.as_view()),path('app/<str:u_id>/', app.views.task_detail.as_view()),
]
# views.py
class task(View):# 获取所有def get(self, request):response = {'code': '200', 'msg': "查询成功"}return JsonResponse(response, safe=False)# 新增def post(self,request):response = {'code': '200', 'msg': "添加成功"}return JsonResponse(response, safe=False)class task_detail(View):# 根据id获取def get(self, request, u_id):response = {'code': '200', 'msg': "获取成功"}return JsonResponse(response, safe=False)# 根据id删除def delete(self, request, u_id):response = {'code': '200', 'msg': "删除成功"}return JsonResponse(response, safe=False)# 根据id修改def put(self, request, u_id):response = {'code': '200', 'msg': "修改成功"}return JsonResponse(response, safe=False)
相关文章:
Restful API接口规范(以Django为例)
Restful API接口规范(以Django为例) Restful API的接口架构风格中制定了一些规范,极大的简化了前后端对接的时间,以及增加了开发效率 安全性保证–使用https路径中带 api标识路径中带版本号数据即资源,通常使用名词操作请求方式决定操作资源…...
AI助力,程序员压力倍增?
讲动人的故事,写懂人的代码 你知道程序员现在在AI辅助编程时最头疼的事情是什么吗?就是怎么在改代码的时候保住小命。 大家都听过程序员因为工作太累导致过劳湿的事情。 无论是写新功能、修bug,还是更改系统配置,都得改代码。 现在有了AI的帮助,本应该轻松很多,为什么…...
LoRA微调
论文:LoRA: Low-Rank Adaptation of Large Language Models 实现:microsoft/LoRA: Code for loralib, an implementation of “LoRA: Low-Rank Adaptation of Large Language Models” (github.com) 摘要 自然语言处理的一个重要的开发范式包括&#…...
45.基于SpringBoot + Vue实现的前后端分离-驾校预约学习系统(项目 + 论文)
项目介绍 本站是一个B/S模式系统,采用SpringBoot Vue框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SpringBoot Vue技术的驾校预约学习系统设计与实现管理工作…...
系统思考—时间滞延
“没有足够的时间是所有管理问题的一部分。”——彼得德鲁克 鱼和熊掌可以兼得,但并不能同时获得。在提出系统解决方案时,我们必须认识到并考虑到解决方案的实施通常会有必要的时间滞延。这种延迟有时比我们预想的要长得多,特别是当方案涉及…...
SSM项目转Springboot项目
SSM项目转Springboot项目 由于几年前写的一个ssm项目想转成springboot项目,所以今天倒腾了一下。 最近有人需要毕业设计转换一下,所以我有时间的话可以有偿帮忙转换,需要的私信我或+v:Arousala_ 首先创建一个新的spr…...
VUE3.0对比VUE2.0
vue3.0 与 vue2.0的不同之处有以下几点: 数据响应式原理 3.0基于Proxy的代理实现监测,vue2.0是基于Object.defineProperty实现监测。 vue2.0 通过Object.defineProperty,每个数据属性被定义成可观察的,具有getter和setter方法&…...
车内AR互动娱乐解决方案,打造沉浸式智能座舱体验
美摄科技凭借其卓越的创新能力,为企业带来了革命性的车内AR互动娱乐解决方案。该方案凭借自研的AI检测和渲染引擎,打造出逼真的数字形象,不仅丰富了车机娱乐内容,更提升了乘客与车辆的互动体验,让每一次出行都成为一场…...
OR36 链表的回文结构
描述 对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。 给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。 测试样例: 1->…...
【译】微调与人工引导: 语言模型调整中的 SFT 和 RLHF
原文地址:Fine-Tuning vs. Human Guidance: SFT and RLHF in Language Model Tuning 本文主要对监督微调(SFT, Supervised Fine Tuning )和人类反馈强化学习(RLHF, Reinforcement Learning from Human Feedback)进行简…...
kylin java.io.IOException: error=13, Permission denied
linux centos7.8 error13, Permission denied_linux open error13-CSDN博客 chmod -R 777 /home/zengwenfeng/kkFileView-4.2.1 2024-04-15 13:15:17.416 WARN 3400 --- [er-offprocmng-1] o.j.l.office.LocalOfficeProcessManager : An I/O error prevents us to determine…...
前端面试01总结
1.Js 中!x为true 时,x可能为哪些值 答: 1.false:布尔值false 2.0或-0:数字零 3.""或’或 (空字符串):长度为0的字符串 4.null:表示没有任何值的特殊值 5.undefined:变量未定义时的默认…...
算法--目录
algorithm: 十种排序算法 二分法-各种应用 algorithm: 拓扑排序 算法中的背包问题 最长子序列问题 前缀和-解题集合 差分数组-解题...
ArcGIS Pro 3D建模简明教程
在本文中,我讲述了我最近一直在探索的在 ArcGIS Pro 中设计 3D 模型的过程。 我的目标是尽可能避免与其他软件交互(即使是专门用于 3D 建模的软件),并利用 Pro 可以提供的可能性。 这个短暂的旅程分为三个不同的阶段:…...
24届数字IC设计/验证秋招总结贴——先看这个
文章目录 前言一、经验篇二、知识学习篇三、笔试篇3.1 各大公司笔试真题3.2 华为机试——数字芯片笔试题汇总 四、面试篇4.1 时间节点4.2 提前批4.3 正式批 前言 为方便快速进行查找该专栏的内容,将所有内容链接均放在此篇博客中 整理不易,欢迎订阅~~ …...
带洞平面三角分割结果的逆向算法
先标不重复点,按最近逐个插入。 只说原理。 不带洞的 1 2 4 2 3 4 两个三角形 结果 1 2 3 4 无重复 无洞 1 2 6 1 2 3 6 1 2 3 7 6 1 2 3 4 7 6 1 2 3 4 5 7 6 1 2 3 4 1 5 7 6 1 2 3 4 1 6 5 7 6 最终结果 1 2 3 4 1 6 5 7 6 按重复分割 1 2 3…...
MGRE-OSPF接口网络类型实验
OSPF接口网络类型实验 一,实验拓扑 初始拓扑: 最终拓扑: 二,实验要求及分析 要求: 1,R6为ISP只能配置IP地址,R1-R5的环回为私有网段 2,R1/R4/R5为全连的MGRE结构,R…...
ChatGPT科研利器详解:写作论文轻松如玩游戏
ChatGPT无限次数:点击直达 ChatGPT科研利器详解:写作论文轻松如玩游戏 引言 在当今科技日新月异的时代,人工智能技术的应用越来越广泛,其中自然语言处理领域的发展尤为迅猛。ChatGPT作为一款先进的文本生成模型,为科研工作者提供…...
vue3从精通到入门23:定义全局变量
在vue2中,我们知道vue2.x是使用Vue.prototype.$xxxxxxx来定义全局变量, 比如定义一个全局的工具函数。 // 定义 ... Vue.prototype.$utilsutils;// 使用 this.$utils() ... 在vue3中我们无法使用this,提供了globalProperties; …...
反爬虫之代理IP封禁-协采云IP池
反爬虫之代理IP封禁-协采云IP池 1、目标网址2、IP封禁4033、协采云IP池 1、目标网址 aHR0cDovL3d3dy5jY2dwLXRpYW5qaW4uZ292LmNuLw 2、IP封禁403 这个网站对IP的要求很高,短时间请求十几次就会遭关进小黑屋。如下图: 明显是网站进行了反爬处理&…...
MMD创作者必看:除了跳舞,你还能用MikuMikuDance玩出哪些花样?
MMD创作者进阶指南:解锁MikuMikuDance的隐藏玩法 当你已经能熟练制作MMD舞蹈视频时,是否想过这款免费3D动画软件还能玩出更多花样?MikuMikuDance远不止是一个"虚拟歌姬跳舞模拟器",它其实是一个被严重低估的轻量级3D动画…...
3个简单步骤彻底解决Dell G15笔记本散热问题:开源温度控制中心完全指南
3个简单步骤彻底解决Dell G15笔记本散热问题:开源温度控制中心完全指南 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否正在为Dell G15笔记本…...
基于MCP协议的智能文档处理工具simdoc-mcp:从RAG原理到Claude集成实战
1. 项目概述:从“文档理解”到“智能交互”的范式跃迁最近在折腾一个挺有意思的开源项目,叫simdoc-mcp。乍一看这个名字,可能有点摸不着头脑,svd-ai-lab是背后的团队,simdoc是核心,mcp是关键协议。简单来说…...
LinkSwift:八大网盘直链下载助手终极指南,告别客户端束缚![特殊字符]
LinkSwift:八大网盘直链下载助手终极指南,告别客户端束缚!🚀 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百…...
报名CSGO/steam游戏搬砖项目前,这些内幕一定要了解
我相信大多数人都经常困惑于一件事,那就是每当想交钱报名某个项目的时候,却发现网上做这个项目的团队很多,一家比一家会吹,一家比一家牛B,着实很难抉择到底选哪家。生怕报名了后迎接自己的就是一个深不见底的黑洞&…...
轻量级注意力新范式:ECA-Net如何用一维卷积重塑通道交互
1. 从SE-Net到ECA-Net:通道注意力的轻量化革命 在计算机视觉领域,注意力机制就像给神经网络装上了"智能探照灯",让模型能够自动聚焦在最重要的特征上。SE-Net(Squeeze-and-Excitation Network)作为通道注意力…...
Redis模糊查询实战:从keys到scan的演进与避坑指南
1. Redis模糊查询的生死抉择:keys命令的血泪教训 那天凌晨三点,我被急促的电话铃声惊醒。线上订单系统突然卡死,监控大屏一片飘红。登录服务器后用redis-cli --latency检测,发现Redis响应时间高达2000ms!紧急排查后发现…...
互联网大厂 Java 求职者的面试:Spring Boot 的核心与微服务应用
互联网大厂 Java 求职之路:面试官的严肃与程序员燕双非的搞笑 在当今快速发展的互联网行业,Java 开发者的面试显得尤为重要。以下是一次精彩的面试场景,面试官与搞笑程序员燕双非之间的对话,展示了技术与幽默的完美结合。第一轮提…...
2025年液冷全产业链解析:AI时代散热革命,各环节下的价值拆解
🎓作者简介:科技自媒体优质创作者 🌐个人主页:莱歌数字-CSDN博客 💌公众号:莱歌数字(B站同名) 📱个人微信:yanshanYH 211、985硕士,从业16年 从…...
机器学习之逻辑回归详解
摘要逻辑回归(Logistic Regression)是机器学习中最基础且应用最广泛的分类算法之一。尽管名字中带有“回归”二字,但它实际上是一种经典的分类算法,主要用于解决二分类和多分类问题。本文将从几何回归的原理出发,详细介…...
