首页 > 其他分享 >Django知识笔记1

Django知识笔记1

时间:2024-02-07 17:33:43浏览次数:27  
标签:返回 HTTP GET 知识 用户 笔记 Django API 服务器

本文从分析现在流行的前后端分离Web应用模式说起,然后介绍如何设计REST API,通过使用Django来实现一个REST API为例,明确后端开发REST API要做的最核心工作,然后介绍Django REST framework能帮助我们简化开发REST API的工作。

Web应用模式

在开发Web应用中,有两种应用模式:

前后端不分离

前后端分离

1 前后端不分离

在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。

这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不再适用于前端App应用,为了对接App后端还需再开发一套接口。

HTTP动词

对于资源的具体操作类型,由HTTP动词表示。

常用的HTTP动词有下面四个(括号里是对应的SQL命令)。

  • GET(SELECT):从服务器取出资源(一项或多项)。
  • POST(CREATE):在服务器新建一个资源。
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
  • DELETE(DELETE):从服务器删除资源。

还有三个不常用的HTTP动词。

  • PATCH(UPDATE):在服务器更新(更新)资源(客户端提供改变的属性)。
  • HEAD:资源的元数据。
  • OPTIONS:信息,关于资源的哪些属性是客户端可以改变的。

下面是一些例子。

过滤信息(Filtering)

如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。

下面是一些常见的参数。

?limit=10:指定返回记录的数量
?offset=10:指定返回记录的开始位置。
?page=2&per_page=100:指定第几页,以及每页的记录数。
?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
?animal_type_id=1:指定筛选条件

参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoos/ID/animals 与 GET
/animals?zoo_id=ID 的含义是相同的。

状态码(Status Codes)

服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。

  • 200 OK - [GET]:服务器成功返回用户请求的数据
  • 201 CREATED - [POST/PUT/PATCH]:用户新建或修改数据成功。
  • 202 Accepted - [*]:表示一个请求已经进入后台排队(异步任务)
  • 204 NO CONTENT - [DELETE]:用户删除数据成功。
  • 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出的请求有错误,服务器没有进行新建或修改数据的操作
  • 401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。
  • 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。
  • 404 NOT FOUND - [*]:用户发出的请求针对的是不存在的记录,服务器没有进行操作,该操作是幂等的。
  • 406 Not Acceptable - [GET]:用户请求的格式不可得(比如用户请求JSON格式,但是只有XML格式)。
  • 410 Gone -[GET]:用户请求的资源被永久删除,且不会再得到的。
  • 422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。
  • 500 INTERNAL SERVER ERROR - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

期待下期

标签:返回,HTTP,GET,知识,用户,笔记,Django,API,服务器
From: https://www.cnblogs.com/yinuo112/p/18011117

相关文章

  • Go语言精进之路读书笔记第14条——了解map实现原理并高效使用
    14.1什么是mapmap对value的类型没有限制,但是对key的类型有严格要求:key的类型应该严格定义了作为“==”和“!=”两个操作符的操作数时的行为,因此func、map、slice、chan不能作为map的key类型。map类型不支持“零值可用”,未显式赋初值的map类型变量的零值为nil。对处于零值状态的......
  • 软件测试学习笔记丨UI_ai自动化获取图片验证码
    UI自动化获取图片验证码代码test_ai.pyfromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromL5.AICode.ocr_codeimportOCRCodeclassTestAi:defsetup_class(self):self.driver=webdriver.Chrome()......
  • 【驾驶知识】科目一、科目四知识点总结大全!!!
    前言:驾考宝典知识点整理、科目一总结、科目四总结、驾照科知识点总结。科目一和科目四的主要知识点,自己在准备时整理的笔记,仅供参考,希望大家都能顺利通关~原文持续更新中:https://www.cnblogs.com/MrFlySand/p/18010913戳下方链接,后台回复【230813驾照】获取更多驾考知识http......
  • Go语言精进之路读书笔记第13条——了解切片实现原理并高效使用
    13.1切片究竟是什么Go数组是值语义的,这意味着一个数组变量表示的是整个数组,对于元素类型长度较大或元素个数较多的数组,如果直接以数组类型参数传递到函数中会有不小的性能损耗。这时很多人会使用数组指针来定义函数参数,但在Go语言中,更地道的方式是使用切片。切片之于数组就像......
  • Java学习的知识笔记
    不会改变原始对象的方法reverse函数,作用:排序使用小技巧判断string是否相等可以使用equals来进行判断。判断string是否是空字符串可以用isBlank()进行判断对于超大的整数加减使用对应的函数进行操作,比如加,使用add函数参考bignum.java因为math类的构造方法是private修饰,所以......
  • 【论文笔记】用于遥感图像语义分割的几何边界引导特征融合与空间-语义上下文聚合技术
    作者:YupeiWang发表年代:2023使用的方法:边界指导、上下文聚合来源:IEEETIP方向:语义分割期刊层次:CCFA;计算机科学1区;IF13.3文献链接:https://doi.org/10.1109/TIP.2023.3326400WangY,ZhangH,HuY,etal.Geometricboundaryguidedfeaturefusionandspa......
  • 2024医保的部分知识
    2024医保的部分知识背景简单总结一下,后续也许有用处关于医保的分类除去公务员、领导(行政级别,部分事业单位)等的特殊特权群体。以及使用商业保险覆盖自己诊疗全过程的富人阶层。中国普通人现在医保主要分为两类:城镇职工医疗保险城乡居民医疗保险两者在门诊和住院时......
  • MPNN论文阅读笔记
    arXiv:1704.01212v2[cs.LG]12Jun2017MPNN消息传递神经网络,专为图数据设计其前向传播可划分为两个阶段:消息传递与读出消息传播阶段如下:Mt是t时刻的消息函数,Ut为t时刻的节点更新函数,evw是边vw的特征,htv是顶点v在t时刻的hiddenfeature,h0v则为最初的节点特征,经过消息的多次......
  • 软件测试学习笔记丨nmon 工具简介与使用
    nmon简介nmon是一种可以在AIX与Linux操作系统上使用的性能监控与分析工具使用技巧:下载位置:http://nmon.sourceforge.net ,从Binaries中下载可执行程序包解压之后选择使用所在操作系统对应的可执行程序可以使用ln命令将nmon程序软链接添加到/urs/bin目录下,这样可以通......
  • 软件测试学习笔记丨性能分析系统级别指标 io cpu mem net
    io指标监控命令iostat命令描述:监控系统设备的IO负载情况命令演示:iostatio指标监控命令df命令描述:列出⽂件系统的整体磁盘空间使⽤情况命令演示:df-hcpu指标监控命令uptime命令描述:用于显示系统总共运行了多长时间和系统的平均负载命令演示:uptimecpu指标监控命令cat/......