web框架常见概念
web应用模式
django web框架是专门用来写web项目
我们在django的学习中可以体会到,后端人员要写后端,但是也需要写模板语法,这也可以理解为全栈开发,但是随着前端框架的增多,我们从前后端混合时代过渡到前后端分离的时代,作为后端人员,不需要动前端代码,只需要写接口即可。
后端人员 -- 一点前端都不需要动,只需要写接口即可
全栈开发 -- web后端和前端框架(vue等,react)都要写
前后端混合的django框架
前后端分离的django框架
API接口
(Application Programming Interface,应用程序编程接口)在上述的前后端分离的django框架中,我们强调后端不需要动前端代码,转而通过接口来与前端相联系,而接口是需要规范的,用于消除前后端人员命名习惯的差异,降低合作成本。
api接口包含很多信息:
-
url地址
-
请求方式:get、post、delete、put。。。
-
请求参数:json格式的key:value类型数据(目前主流)
目前已经有相关的研究去实现更高效的更安全的交互格式,如protobuf
-
响应数据:json格式或者早期xml格式的数据
前三条可以理解为前端可以通过这些方式向服务器发送请求,而第四条响应数据则就是后端处理的结果返回给浏览器(也不一定是浏览器)
接口测试工具postman
作为后端,写好了接口,我们自己要测试通过,再给别人用,而浏览器只能直接的发送get请求,post、delete等请求不能自动直接的发送。
可以使用postman接口测试工具(市面上有很多接口测试工具)这里简单介绍一下postman
请求方式
- form-data 可携带文件的格式,postman中可以进行选择
- urlencoded 默认url编码格式,放到请求体中的request.body
- json 将携带的数据组织为json自定义对象(字典)在request.body
响应结果:
- body:postman中有pretty和raw两种显示形式,还可以预览等
- cookies:一些要报存到浏览器的信息
- headers:响应头
restful规范
REST全称是Representational State Transfer,中文意思是表述:表征性状态转移,它首次出现在2000年Roy Fielding的博士论文中。
RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中
-
数据的安全保障,通常使用https(http+ssl/tsl)协议
- 一般采用https协议进行传输
- 采用https协议,可以提高数据交互过程中的安全性
-
接口中带api标识
如
https://api.baidu.com/map
或者https://www.baidu.com/api/map
-
多版本共存,路径中应该带版本信息
https://api.baidu.com/v1/login
-
数据即是资源,均使用名词,尽量不出现动词(最核心的)
接口一般都是完成前后台数据的交互,交互的数据我们称之为资源
如:
https://api.baidu.com/user
/https://api.baidu.com/book
等 -
针对资源的操作,是由请求方式决定的
操作资源一般都会涉及增删改查,那么一般会分为以下几种:
api接口网址 请求方式 含义 https://api.baidu.com/books
get请求 获取所有书 https://api.baidu.com/books/1
get请求 获取主键为1的书 https://api.baidu.com/books
post请求 新增一本书 https://api.baidu.com/books/1
put请求 修改主键为1的书 https://api.baidu.com/books/1
delete请求 删除主键为1的书 以上操作,几乎涵盖了所有的资源的操作方式,可能会有所变形。可以总结为:查所有、查一个、新增一个、修改一个、删除一个
-
在请求地址中携带过滤条件
https://api.baidu.com/books?name=红&price=99
-
响应状态码有两套规范
- http响应状态码:1xx-请求正在处理,2xx-成功响应,3xx-重定向,4xx-客户端错误,5xx-服务端错误
- 公司自定义规定的响应状态码,放在响应体中,响应体是高度自定义的,但是作为一个公司开发的网站,应该有其一定的规范。
-
返回数据中携带提示信息
{"code":0,"msg":"ok"}
-
增删改查返回的结果应遵循某种规范
- 查询多个 -- [{},{},{}]
- 查询一个 -- {}
- 新增一个 -- 返回新生成的资源对象
- 修改一个 -- 返回修改后的资源对象
- 删除一个 -- 返回一个空文档
这条规范也有很多公司不使用
-
响应数据中可以携带链接
序列化和反序列化
api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把数据按照某种规则转换成各语言可交互的格式,反序列化就是将交互格式的数据转换成当前语言可以使用的数据。
拿前后端分离的django项目来说,我们通过orm将数据查询出来得到的数据对象queryset是需要转换成列表套字典的方式来使用json序列化的,然后前端语言才能拿到这些数据,对其做相应的反序列化处理。
标签:baidu,web,请求,框架,常见,接口,api,https,com From: https://www.cnblogs.com/Leethon-lizhilog/p/17092136.html