Flask框架之Restful--介绍--下载--基本使用

目录

Restful

概念

架构的主要原则

适用场景

协议

数据传输格式

url链接规则

HTTP请求方式

状态码

 Restful的基本使用

介绍

优势

缺点

安装

 基本使用

注意


Restful

概念

RESTful(Representational State Transfer)是一种用于设计网络应用程序的架构风格和原则,尤其适用于Web服务。它通过使用标准的HTTP方法(如GET、POST、PUT和DELETE)来结构化和与资源进行交互。

架构的主要原则

  1. 客户端-服务器架构:客户端和服务器是分离的实体,在网络上进行通信。客户端负责用户界面和用户体验,而服务器管理资源并处理请求。

  2. 无状态通信:客户端向服务器发出的每个请求都应包含服务器理解和处理请求所需的所有必要信息。服务器不会在请求之间保留任何特定于客户端的状态。

  3. 统一接口:RESTful服务应具有一致和标准化的接口。接口通常包括通过URI(统一资源标识符)识别资源,使用HTTP方法和状态码进行自我描述的消息,以及作为应用程序状态引擎(HATEOAS)的超媒体,以提供导航API的链接。

  4. 面向资源:REST将所有内容都视为资源,可以是物理实体(例如对象)或逻辑实体(例如对象集合)。资源通常通过URI进行标识,并可以使用HTTP方法进行操作。

  5. 无状态服务器:服务器不在请求之间存储任何客户端状态。每个请求都被视为独立的事务,并且服务器不维护客户端的上下文。

  6. 可缓存:来自RESTful服务的响应可以根据服务器提供的缓存控制头在客户端或中间服务器上进行缓存。

适用场景

一个系统的数据库数据,展现的平台有PC端、移动端、app端、ios端。

前端工程师:都遵循RESTful编程规范

后端工程师:都遵循RESTful编程规范

最终结果:开发效率高,便于管理

协议

用http或者https协议。

数据传输格式

数据传输的格式应该都用json格式。

url链接规则

url链接中,不能有动词,只能有名词。

并且对于一些名词,如果出现复数,那么应该在后面加s。

比如:获取新闻列表,应该使用/news/,而不应该使用/get_news/

HTTP请求方式

GET:从服务器上获取资源。

POST:在服务器上新增或者修改一个资源。

PUT:在服务器上更新资源。(客户端提供所有改变后的数据)

PATCH:在服务器上更新资源。(客户端只提供需要改变的属性)

DELETE:从服务器上删除资源。

状态码

状态码原因描述描述
200OK服务器成功响应客户端的请求。
400INVALID REQUEST用户发出的请求有错误,服务器没有进行新建或修改数据的操作
401Unauthorized用户没有权限访问这个请求
403Forbidden因为某些原因禁止访问这个请求
404NOT FOUND用户请求的url不存在
406NOT Acceptable用户请求不被服务器接收(比如服务器期望客户端发送某个字段,但是没有发送)。
500Internal server error服务器内部错误,比如遇到bug

 Restful的基本使用

介绍

优势

Flask-Restful是一个专门用来写restful api的一个插件。

使用它可以快速的集成restful api接口功能。

在系统的纯api的后台中,这个插件可以帮助我们节省很多时间。

缺点

如果在普通的网站中,这个插件就没有优势了,因为在普通的网站开发中,是需要去渲染HTML代码的,

而Flask-Restful在每个请求中都是返回json格式的数据。

安装

 pip install flask-restful

 基本使用

定义Restful的类视图:

1. 从flask_restful中导入Api,来创建一个api对象。

2. 写一个类视图,让他继承自Resource类,然后在这个里面,使用你想要的请求方式来定义相应的方法,比如你想要将这个类视图只能采用post请求,那么就定义一个post方法。

3. 使用api.add_resource来添加类视图与url

from flask import Flask,url_for
# pip install flask-restful
from flask_restful import Resource,Api




app = Flask(__name__)
# 建立Api对象,并绑定应用APP
api = Api(app)


class LoginView(Resource):
  def get(self):
    return {"flag":True}
  def post(self):
    return {"flag":False}


# 建立路由映射
# api.add_resource(LoginView,'/login/')
api.add_resource(LoginView,'/login/','/login2/',endpoint='login')


with app.test_request_context():
  # werkzeug.routing.BuildError: Could not build url for endpoint 'LoginView'.
  # Did you mean 'loginview' instead?
  # 默认没有写endpoint反向url_for函数通过小写函数名
  # 如果有多个url,会返回第1个URL
  # print(url_for('loginview'))
  print(url_for('login'))


if __name__ == '__main__':
  app.run(debug=True)

注意

  1. 如果你想返回json数据,那么就使用flask_restful,如果你是想渲染模版,那么还是采用之前的方式,就是app.route的方式。
  2. url还是跟之前的一样,可以传递参数。也跟之前的不一样,可以指定多个url。
  3. endpoint是用来给url_for反转url的时候指定的。如果不写endpoint,那么将会使用视图的名字的小写来作为endpoint。
  4. add_resource的第二个参数是访问这个视图函数的url,这个url可以跟之前的route一样,可以传递参数,并且还有一点不同的是,这个方法可以传递多个url来指定这个视图函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我还可以熬_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值