Django 基础(三):restful api 概念

一、前后端分离的优缺点 :

为什么要前后端分离 ?

1.pc、app、pad多端适应

传统的后端 模板生成模式只适用于 pc 端,其他的做起来比较麻烦。

2.SPA开发 模式 开始流行

SPA 是指单页面应用程序

3.前后端开发职责不清

django 的 template 是前端写还是 后端写?

4.开发效率问题,前后端互相等待

5.前端一直配合着后端,能力受限

6.后台开发语言和模板高度耦合,导致开发语言严重依赖

前后端分离缺点: 【文档再前后端分离的系统中非常重要】

1.前后端学习门槛增加

2.数据依赖导致文档的重要性增加

后端怎么交互给前端一般 都是通过 文档 来完成的

3.前端工作量加大

4.SEO的难度加大

SEO 是指搜索引擎优化,前后端分离就意味着前端的 整个页面全部是用

ajax 或网络来 请求的,这样对爬虫来说,如果请求 html 源码,

则获取不到数据,因为数据是通过 ajax 请求的, 所以爬虫爬

这个页面的时候只能拿到一些标签,拿不到数据,

这样虽然 在 某种程度上防止了一些初级的爬虫,但是同时也将一些

搜索引擎(百度、360等)的爬虫也拒之门外了,所以他们就没法把你

往前排 了。 【虽然前后端分离也有专门的策略 (SSR) 解决 SEO 】

5.后端开发模式迁移增加成本

二、restful api

restful api目前是前后端 分离最佳实践 (他是一个标准 ,不是框架)

1.轻量,直接通过 http,不需要额外的协议,post/get/put/delete 操作

2.面向资源 ,一目了然,具有自解释性

3.数据描述简单,一般通过 json 或者 xml 来做数据通信

restful api 重要概念

1.概念 http://www.ruanyifeng.com/blog/2014/05/restful_api.html

2.实践 https://blog.csdn.net/xiangzhihong8/article/details/53957550

Rest实践

一般资源操作只有新增、删除、查询、更新,对应HTTP协议中四类请求:POST、DELETE、GET、PUT。但在使用Rest的时候往往需要注意: 

- 使用场景,Restful风格特别适合于异构系统之间的调用,另外在分布式场景中也比较适用。比如现在移动端APP的接口设计很多都采用这种风格,另外有不少云平台提供的服务接口也大多采用Restful风格设计。 

- 框架支持,以Java版本的为例。Java对于Restful有一个规范定义JAX-RS,而支持Restful框架也不少,比如:Restlet、Jersey、RESTEasy、CXF。相关文章请查询:各JAX-RS实现 

说了这么多,那有没有例子呢?大家可以参考:Spring REST实践百度云推设计环信api设计

参考:http://www.cnblogs.com/coderland/p/5903034.html 

http://www.jianshu.com/p/c117d32aded4

3.restful api 接口规范 : https://blog.csdn.net/u010622769/article/details/54341363

状态码有实际意义,可以认为是前端跟后端的一个通用协议 ,我返回一个状态码,前端就找到这个状态码是什么意思,而不需要给出错误原因等等,要特别注意!!!

  • 200 OK - [GET]:服务器成功返回用户请求的数据,该操作是幂等的(Idempotent)。
  • 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 - [*]:服务器发生错误,用户将无法判断发出的请求是否成功。

猜你喜欢

转载自blog.csdn.net/qq_26128879/article/details/82431524