web框架常见概念

web框架常见概念

web应用模式

django web框架是专门用来写web项目

我们在django的学习中可以体会到,后端人员要写后端,但是也需要写模板语法,这也可以理解为全栈开发,但是随着前端框架的增多,我们从前后端混合时代过渡到前后端分离的时代,作为后端人员,不需要动前端代码,只需要写接口即可。

后端人员 -- 一点前端都不需要动,只需要写接口即可

全栈开发 -- web后端和前端框架(vue等,react)都要写

前后端混合的django框架

image

前后端分离的django框架

image

API接口

(Application Programming Interface,应用程序编程接口)在上述的前后端分离的django框架中,我们强调后端不需要动前端代码,转而通过接口来与前端相联系,而接口是需要规范的,用于消除前后端人员命名习惯的差异,降低合作成本。

api接口包含很多信息:

  • url地址

  • 请求方式:get、post、delete、put。。。

  • 请求参数:json格式的key:value类型数据(目前主流)

    目前已经有相关的研究去实现更高效的更安全的交互格式,如protobuf

  • 响应数据:json格式或者早期xml格式的数据

前三条可以理解为前端可以通过这些方式向服务器发送请求,而第四条响应数据则就是后端处理的结果返回给浏览器(也不一定是浏览器)

接口测试工具postman

作为后端,写好了接口,我们自己要测试通过,再给别人用,而浏览器只能直接的发送get请求,post、delete等请求不能自动直接的发送。

可以使用postman接口测试工具(市面上有很多接口测试工具)这里简单介绍一下postman

win64位 postman下载地址

image

image

请求方式

  1. form-data 可携带文件的格式,postman中可以进行选择
  2. urlencoded 默认url编码格式,放到请求体中的request.body
  3. json 将携带的数据组织为json自定义对象(字典)在request.body

image

响应结果:

  1. body:postman中有pretty和raw两种显示形式,还可以预览等
  2. cookies:一些要报存到浏览器的信息
  3. headers:响应头

restful规范

REST全称是Representational State Transfer,中文意思是表述:表征性状态转移,它首次出现在2000年Roy Fielding的博士论文中。

RESTful是一种定义Web API接口的设计风格,尤其适用于前后端分离的应用模式中

  1. 数据的安全保障,通常使用https(http+ssl/tsl)协议

    • 一般采用https协议进行传输
    • 采用https协议,可以提高数据交互过程中的安全性
  2. 接口中带api标识

    https://api.baidu.com/map或者https://www.baidu.com/api/map

  3. 多版本共存,路径中应该带版本信息

    https://api.baidu.com/v1/login

  4. 数据即是资源,均使用名词,尽量不出现动词(最核心的)

    接口一般都是完成前后台数据的交互,交互的数据我们称之为资源

    如:https://api.baidu.com/user/https://api.baidu.com/book

  5. 针对资源的操作,是由请求方式决定的

    操作资源一般都会涉及增删改查,那么一般会分为以下几种:

    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的书

    以上操作,几乎涵盖了所有的资源的操作方式,可能会有所变形。可以总结为:查所有、查一个、新增一个、修改一个、删除一个

  6. 在请求地址中携带过滤条件

    https://api.baidu.com/books?name=红&price=99

  7. 响应状态码有两套规范

    • http响应状态码:1xx-请求正在处理,2xx-成功响应,3xx-重定向,4xx-客户端错误,5xx-服务端错误
    • 公司自定义规定的响应状态码,放在响应体中,响应体是高度自定义的,但是作为一个公司开发的网站,应该有其一定的规范。
  8. 返回数据中携带提示信息

    {"code":0,"msg":"ok"}
    
  9. 增删改查返回的结果应遵循某种规范

    • 查询多个 -- [{},{},{}]
    • 查询一个 -- {}
    • 新增一个 -- 返回新生成的资源对象
    • 修改一个 -- 返回修改后的资源对象
    • 删除一个 -- 返回一个空文档

    这条规范也有很多公司不使用

  10. 响应数据中可以携带链接

序列化和反序列化

api接口开发,最核心最常见的一个过程就是序列化,所谓序列化就是把数据按照某种规则转换成各语言可交互的格式,反序列化就是将交互格式的数据转换成当前语言可以使用的数据。

拿前后端分离的django项目来说,我们通过orm将数据查询出来得到的数据对象queryset是需要转换成列表套字典的方式来使用json序列化的,然后前端语言才能拿到这些数据,对其做相应的反序列化处理。

posted @ 2023-02-04 18:45  leethon  阅读(38)  评论(0编辑  收藏  举报