3.缓存 缓存的出现是为了解决 REST 的无状态性问题。这个缓存是在客户端实现的,并且缓存了可缓存的响应。...请求头 发送到服务器的额外请求以指定响应类型、编码、内容类型和自定义参数。等等。 4. 请求体 尝试创建资源时,资源数据在放置请求的正文中发送。 5. 响应体 Web 服务器在响应正文中返回数据。...创建 API 端点和 REST 方法 接下来,我们需要创建 api 端点和所需的 REST 方法,如下所示。 GET 方法将在文章列表中搜索请求的类别,如果找到则返回数据以及响应代码 200 OK。...否则 404 未找到 class Article(Resource): def get(self, category): POST 方法将在文章列表中插入新的文章数据,并返回插入的数据并创建响应代码...如果记录已存在,则返回错误代码 400 错误请求。 def post(self,category): PUT 方法将覆盖记录并返回数据以及响应代码 200 OK。
REST APIs的支持。...if __name__ == '__main__': app.run(debug=True) 保存代码到api.py测试时打开debug模式会提供代码重载,以及更详细的错误信息。...,像 Flask 一样,你可以返回任何迭代器,它会被转化成一个包含原始响应对象的响应,Flask-RESTful还支持使用多个返回时来设置响应码以及响应头,如下: class Todo1(Resource...使用 reqparse 模块同样可以自由地提供全面的错误信息。如果一个参数没有通过校验,Flask-RESTful 将会以一个400的错误请求以及高亮的错误信息回应。...类似 Django ORM 和 WTForm ,你可以使用 fields 模块来描述响应的数据结构。
可以使用abort函数来抛出异常,并指定HTTP响应码和错误消息。...下面是一个示例:from flask import Flaskfrom flask_restful import Api, Resource, abortapp = Flask(__name__)api...= Api(app)class HelloWorld(Resource): def get(self): abort(404, message='Resource not found...类作为资源,并将其绑定到根URL。...当调用get方法时,我们使用abort函数抛出一个HTTP 404异常,表示请求的资源未找到。Flask-RESTful会捕获这个异常并返回一个包含错误消息的HTTP响应。
前言 Flask-RESTful 是一个 Flask 扩展,它添加了快速构建 REST APIs 的支持。它当然也是一个能够跟你现有的ORM/库协同工作的轻量级的扩展。...同 Flask 一样,你可以返回任一迭代器,它将会被转换成一个包含原始 Flask 响应对象的响应。...Flask-RESTful 也支持使用多个返回值来设置响应代码和响应头,如下所示: class Todo1(Resource): def get(self): # Default...from flask_restful import reqparse, abort, Api, Resource app = Flask(__name__) api = Api(app) TODOS..., } def abort_if_todo_doesnt_exist(todo_id): if todo_id not in TODOS: abort(404, message
定制错误消息Flask-RESTful允许我们定制错误消息。可以通过在资源类中定义get_error_message方法来实现。...下面是一个示例:from flask import Flaskfrom flask_restful import Api, Resource, abortapp = Flask(__name__)api...= Api(app)class HelloWorld(Resource): def get(self): abort(404) def get_error_message(self..., status_code): if status_code == 404: return {'message': 'Resource not found'}...当捕获到HTTP 404异常时,Flask-RESTful会调用这个方法并返回一个包含自定义错误消息的HTTP响应。
在我的职业生涯中,我使用了数百个 REST API 并制作了数十个。由于我经常在 API 设计中看到相同的错误,因此我认为写下一组最佳实践可能会更好。...返回 JSON,如果客户端想要协商其他内容,请依赖标准 HTTP 标头。 规则 #4:不要将数组作为顶级响应返回 来自端点的顶级响应应该始终是一个对象,而不是一个数组。...由于成功执行的 DELETE 作业无论如何都会重试,因此作业必须将 "未找到 "响应视为成功。如果将 404 作为成功处理,而堆栈中的失败返回 404,作业就会从队列中删除,删除也不会传播。...你可以使用 404,但返回一个自定义的错误正文,并要求客户端检查错误正文是否正确。这会给懒惰的客户端程序员带来麻烦。...在 409 响应正文中提供原始 ID 亮点:通过允许具有相同参数的重复请求或在冲突时返回现有 ID,使 API 具有幂等性。
自定义异常类除了使用内置的异常类之外,还可以定义自己的异常类。可以通过继承flask_restful.abort类来实现。...下面是一个示例:from flask import Flaskfrom flask_restful import Api, Resource, abortapp = Flask(__name__)api...ResourceNotFoundError)def handle_resource_not_found_error(error): return {'message': error.message}, 404api.add_resource...当调用get方法时,我们抛出一个ResourceNotFoundError异常。...我们还定义了一个handle_resource_not_found_error函数来处理这个异常,并返回一个HTTP 404错误响应。
目前,每当出现特殊情况时,客户休息应用程序都会返回一个 ResponseEntity(一个由状态、标头和正文组成的 Http 响应包装器)。例如,在请求详细信息时找不到客户。...实施一个将使代码更易于阅读,并将“常规代码”与发生异常情况时要执行的操作分开。 上面的代码将返回 404 错误和如下图所示的信息。 现在让我们看一下在我们的应用程序中管理异常的第一个机制。..."path": "/api/v1/customers/100" } 作为安全措施,默认情况下 Spring 不会在响应中显示错误消息。...", "path": "/api/v1/customers/1001" } 上面的 JSON 可能不符合我们的要求。我们将在下一节中看到如何对任何异常使用自定义 JSON 错误响应。...在我们的例子中,该方法将异常类型作为参数并返回一个 ResponseEntity。 它的工作方式是当抛出异常时,处理程序方法将拦截它并返回特定的响应(如果有的话)。
以下是示例代码:from flask import Flask, requestfrom flask_restful import Api, Resourceapp = Flask(__name__)api...在 get() 方法中,我们首先检查 user_id 是否存在于 users 字典中,如果不存在,则返回 404 错误响应。如果存在,则返回用户对象的 JSON 序列化字符串。...在 post() 方法中,我们首先检查 user_id 是否已经存在于 users 字典中,如果存在,则返回 400 错误响应。...在 put() 方法中,我们首先检查 user_id 是否存在于 users 字典中,如果不存在,则返回 404 错误响应。...在 delete() 方法中,我们首先检查 user_id 是否存在于 users 字典中,如果不存在,则返回 404 错误响应。
我放到cookie中是为了做web时好自动存储,省事。 3、验证token 我自己封装了一个类,方便后期。...布尔值 Access-Control-Allow-Credentials 是否允许请求发送cookie ---- 返回http状态码 return “错误信息”,404 或者使用abort() from...有一个非常好用的库叫flask_restful,这可以非常简单的部署api服务。 flask_restful官方文档 restful api 不是技术,准确的说是一种规范。...Restful api 安装 pip install flask-restful Restful api 示例 from flask import Flask from flask_restful import...---- Flask返回图片 flask如果想返回图片,通用的处理方式是使用Base64编码,web接收到信息,使用html的img标签即可展示图片。
增加了对快速构建 REST API 的支持 flasgger- flask 支持的 Swagger UI,可以生成 API 接口文档 # 安装flask pip3 install flask # 安装...if __name__ == '__main__': app.run() 从 flask_restful 文件中导入 Api、Resource 两个类,使用上面的 app 对象,构建一个 api...中的 marshal_with 类可以作为装饰器,定义到动作函数上,指定要返回的字段;然后使用 SQLAlchemy ORM 操作数据库,将数据直接进行返回 比如:返回获取数据列表 # api_foo.py...flask_restful 中的 Api 实例对象,将上面定义的资源路由暴露出去 #api_app.py from flask_restful import Api api = Api(app)...,关注公众号后回复「 rest2 」即可获得全部源码 如果你觉得文章还不错,请大家点赞分享下。
API开发(1小时) 5.1 基础API(对比Spring @RestController) from flask import jsonify @app.route("/api/posts")...} for p in posts]) 5.2 使用Flask-RESTful(对比Spring HATEOAS) from flask_restful import Resource, Api..._404(post_id) return {"id": post.id, "title": post.title} api.add_resource(PostResource,...Flask的request对象基于线程局部(类似Java的ThreadLocal) 异步环境下需使用copy_current_request_context 依赖管理差异 Python无类似...生产环境需使用Gunicorn或uWSGI(类似Tomcat部署) gunicorn -w 4 "app:app" # 启动4个Worker进程 八、扩展练习 添加缓存支持 from flask_caching
文章目录 一、DRF框架自带异常 二、自定义异常 一、DRF框架自带异常 REST 框架的视图处理各种异常,并处理返回适当的错误响应。 处理的异常包括: 在 REST 框架中定义的异常。...APIException 404异常。Http404 权限异常。PermissionDenied 在每种情况下,REST 框架都将返回具有适当状态代码和内容类型的响应。...验证错误的处理方式略有不同,并且将在响应中包含字段名称作为键。如果验证错误不是特定于特定字段的,则它将使用“non_field_errors”键,或者为该设置设置设置的任何字符串值。...二、自定义异常 您可以通过创建一个处理程序函数来实现自定义异常处理,该函数将 API 视图中引发的异常转换为响应对象。这允许您控制 API 使用的错误响应样式。...它不会用于视图直接返回的任何响应,例如在序列化程序验证失败时由泛型视图返回的响应。HTTP_400_BAD_REQUEST
而在RESTful的方向上,Django自身的第三方实现rest_framework也不错,现在看起来很简单的概念和实现,用了很长一段时间才彻底理解。...使用如下的方式来运行,服务即可开启。...总体感觉虽然可以实现,但是所有的细节都需要自己来控制,比如输入结构,输出结构,信息查找的匹配,还有url和方法的映射。总是感觉有些拖泥带水,拖累太重,you can you up的感觉。...使用RESTful的方式,在Flask里面就是引入这个模块即可,相对来说比较简洁和轻量。 要安装flask_restful的话,一个命令即可。...看一下代码其实会发现,这里注册了两个API,这里和上面程序的不同就在于里面使用了Resource做了封装,如果我要添加一个逻辑,其实也是很方便的。不需要堆砌一大堆的if-else
匹配REST设计风格的Web API称为RESTful API。它从三个方面资源进行定义。...上面使用 Flask 的一个最简单的示例,我们的示例没有这么简单,但是也差不多:)。在这个示例中我们需要创建一个 Flask 的实例、初始化数据库控制和 API 控制框架。...RESTful API 的实现 在这里使用 flask-restful 扩展来实现 RESTful API。flask-restful 的初始同 flask-sqlalchemy 的初始化方法相同。...from flask_restful import Resource, reqparse from sqlalchemy import func from pycrawler.module import...在 get 函数中,通过传入的 id 编号,从数据库中读出该元件的完整信息,并转换为 json 数据返回给客户端,当 id 不存在是将返回一个 404 错误。
回页首 正确的使用 HTTP 响应代码 作为 API 的设计者,正确的将 API 执行结果和失败原因用清晰简洁的方式传达给客户程序是十分关键的一步。...因此,HTTP 响应代码可以保证客户端在第一时间用最高效的方式获知 API 运行结果,并采取相应动作。 下表列出了比较常用的响应代码。 表 1....服务器返回此响应时,不会返回网页内容。 400 错误请求 , 服务器不理解请求的语法。 401 未授权 , 请求要求进行身份验证。 403 已禁止 , 服务器拒绝请求。...404 未找到 , 服务器找不到请求的网页。 405 方法禁用 , 禁用请求中所指定的方法。 406 不接受 , 无法使用请求的内容特性来响应请求的网页。...当收到一个有条件请求的 HTTP 头的 REST 请求的时候,我们的程序需要将收到的时间戳或者电子标签与当前内容作比较,就可以很容易的知道用户请求的数据内容在这段时间是否发生过修改,并根据比较结果返回给用户最新内容
对象查询的get_or_404()方法的英文以前见过的get()方法的一个非常有用的变行业释义体育,如果用户存在,报道查看它定给id的对象,当ID不存在时,它会中止请求并向客户端返回一个404错误,而不是返回...查询对象的get_or_404()方法如何触发404错误(我将在以后向您演示如何扩展错误处理,踩返回这些错误JSON格式) )。...我为这个请求返回的响应将是新用户的表示,因此使用产生to_dict()它的有效格式。创建资源的POST请求的响应状态代码应该是201,即创建新实体时使用的代码。...服务器返回了404错误,但是这个错误被格式化为标准的404 HTML错误页面。...对于JSON响应,我将使用从API blueprint中引入error_response辅助函数,但在这里我要将其重命名为api_error_response(),刹车清楚它的作用和来历
简介 RESTful API是目前比较成熟的一套互联网应用程序的API设计理论 安装 Flask 的 RESTful 模块是 flask-restful ,使用 pip 安装: pip install...flask-restful 像之前的 bootstrop-flask 以及 flask-sqlalchamy 模块一样,使用前需要对 Flask 应用进行初始化,然后会得到当前应用的 api 对象,用...endpoint 是 Flask 中对具体路由的内部的具体定义,一般作为 url_for 方法的第一个参数,即通过 endpoint 获得该路由的 URL,在列出 RESTful 资源 URL 时非常有用...RESTful 服务器对请求数据有很强的依赖,就请求数据的获取及校验是很繁琐的事情,还好 Flask-RESTful 提供了非常好的请求解析工具 reqparse,不仅可以获取请求数据,还可以对数据进行校验并返回合适的错误消息...默认情况下有多个参数错误,会以定义参数的顺序,逐个显示错误,定义解析器时将 bundle_errors 设置为 True,则可显示多个错误,如 parser = reqparse.RequestParser
增加了对快速构建 REST API 的支持 flasgger- flask 支持的 Swagger UI,可以生成 API 接口文档 # 安装flask pip3 install flask # 安装...if __name__ == '__main__': app.run() 从 flask_restful 文件中导入 Api、Resource 两个类,使用上面的 app 对象,构建一个 api...对象,接着准备一个列表数据 from flask_restful import Api,Resource app = Flask(__name__) # 实例化一个 Api 对象,用来创建、管理...类可以作为装饰器,定义到动作函数上,指定要返回的字段;然后使用 SQLAlchemy ORM 操作数据库,将数据直接进行返回 比如:返回获取数据列表 # api_foo.py from flask_restful...flask_restful 中的 Api 实例对象,将上面定义的资源路由暴露出去 #api_app.py from flask_restful import Api api = Api(app)
from flask import Flask from flask_restful import Api,Resource app = Flask(__name__) api = Api(app)...if __name__ == '__main__': app.run(debug=True) 说明: 从flask_restful中导入一个Api,来创建一个api对象。...如果想返回json数据,那么就是用flask_restful,如果是渲染模板,还是采用之前的方式。 ...如果验证失败后,将会使用这个参数指定的值作为错误信息。 trim:是否去掉前后空格。 ...标准化返回参数 输出字段 对于一个视图函数,你可以指定好一些字段用于返回。以后可以使用orm模型或者自定义的模型的时候,它会自动的获取模型的相应的字段,生成json数据,然后再返回给客户端。