建筑网站制作,江苏市场监督管理局电话,傻瓜式自助建站系统,公司网上推广平台“ 阅读本文大概需要 3 分钟。 ”有一个非常简单的需求#xff1a;编写一个 HTTP 接口#xff0c;使用 POST 方式发送一个 JSON 字符串#xff0c;接口里面读取发送上来的参数#xff0c;对其中某个参数进行处理#xff0c;并返回。如果我们使用 Flask 来开发这个接口编写一个 HTTP 接口使用 POST 方式发送一个 JSON 字符串接口里面读取发送上来的参数对其中某个参数进行处理并返回。如果我们使用 Flask 来开发这个接口那么代码是这样的from flask import Flask, requestapp Flask(__name__)app.route(/insert, methods[POST])def insert(): info request.json name info[name] age info[age] age_after_10_years age 10 msg f此人名叫{name}10年后此人年龄{age_after_10_years} return {success: True, msg: msg}代码看起来已经很简洁了。我们用requests发个请求看看效果如下图所示看起来没什么问题。现在我搞点破坏把age字段改成字符串再运行一下不出所料报错了。现在我们把age字段改回数字但是直接移除name字段又报错了。为了防止用户不按规矩提交数据我们必须在接口里面做好各种异常数据的判断。于是增加判断以后的代码变得复杂了app.route(/insert, methods[POST])def insert(): info request.json name info.get(name, ) ifnot name: return {success: False, msg: name 参数不可省略不可为空} age info.get(age, 0) ifnot isinstance(age, int): return {success: False, msg: age参数不是数字} age_after_10_years age 10 msg f此人名叫{name}10年后此人年龄{age_after_10_years} return {success: True, msg: msg}看来用 Flask虽然能让你用很短的代码写出一个能工作的项目。但要写成一个可以正常使用的项目还是需要你自己写更多代码。下面我们来看一下现代化的 web 框架FastApi能把这个工程简化到什么程度from fastapi import FastAPIfrom pydantic import BaseModelapp FastAPI()class People(BaseModel): name: str age: int address: str salary: floatapp.post(/insert)def insert(people: People): age_after_10_years people.age 10 msg f此人名字叫做{people.name}十年后此人年龄{age_after_10_years} return {success: True, msg: msg}我们还是使用 requests 发一条信息给 FastApi 开发的 HTTP 接口。对于正常数据正常使用现在我们把age字段改成字符串返回友好的提示信息告诉我类型错误age 字段不是 integer。我们再试一试把name字段去掉返回友好信息提示值错误name字段丢失。整个过程中对类型的检查全都由 FastApi 自己完成。我们省下来很多时间。我用了 Flask 四年但在使用了 5 分钟 FastApi 以后我决定以后不再使用 Flask 了。回过头来我们好好介绍一下 FastApi。使用pip或者pipenv即可安装 FastApipip install fastapipipenv install fastapi安装完成以后我们来完成第一个 APIfrom fastapi import FastAPIapp FastAPI()app.get(/)def index(): return {message: 你已经正确创建 FastApi 服务}这里的写法跟 Flask 几乎一致。只不过在 Flask 中我们定义路由的装饰器为app.route(/)。而这里写为app.get(/)写好代码以后我们需要使用uvicorn来运行 FastApi。首先使用pip或者pipenv安装uvicornpip install uvicornpipenv install uvicorn然后执行命令uvicorn main:app --reload其中main表示我们的代码文件为main.pyapp表示我们初始化的 FastApi 对象的名字。--reload参数表示在修改了代码以后立即生效不需要重启。运行命令以后我们访问http://127.0.0.1:8000可以看到接口已经正确返回了 JSON 格式的数据那么如何定义一个带参数的 GET 方法呢我们再写一段代码app.get(/query/{uid})def query(uid): msg f你查询的 uid 为{uid} return {success: True, msg: msg}写好代码以后我们直接在浏览器里面访问新的地址可以看到修改已经生效了如下图所示如果想限定 uid 只能是数字不能是字符串怎么办呢你只需要多加 4 个字符app.get(/query/{uid})def query(uid: int): msg f你查询的 uid 为{uid} return {success: True, msg: msg}对函数query的参数使用类型标注标注为 int 类型。现在我们再来访问一下接口当 query 后面的参数不是整数时正常报错了。我们再来看一下本文一开始的 POST 方法。在使用 Flask 的时候我们需要手动验证用户 POST 提交上来的数据是什么格式的字段对不对。但使用 FastApi 的时候我们只需要类型标注就能解决所有问题。首先我们导入from pydantic import BaseModel然后继承BaseModel实现我们允许 POST 方法提交上来的数据字段和格式from pydantic import BaseModelapp FastAPI()class People(BaseModel): name: str age: int address: str salary: floatPeople这个类通过类型标注指定了它里面的 4 个字段和他们的类型。现在我们来实现 POST 方法app.post(/insert)def insert(people: People): age_after_10_years people.age 10 msg f此人名字叫做{people.name}十年后此人年龄{age_after_10_years} return {success: True, msg: msg}insert函数的参数people通过类型标注指定为People类型。当我们使用 POST 方式提交数据时FastApi 自动会以People中定义的字段为基准来校验数据发现不对就返回报错信息。除了开发接口变得非常简单外FastApi 还会自动帮我们生成接口文档。大家访问http://127.0.0.1:8000/docs可以看到接口文档已经自动生成好了这个接口不仅能看而且直接就能在接口页面修改样例数据发送请求现场测试以上是对 FastApi 的极简介绍。有兴趣的同学可以查阅它的官方文档。最后告诉大家FastApi 是一个异步 Web 框架它的速度非常非常非常快。远远超过 Flask。FastApi 是最快的几个 Web 框架之一。速度可以匹敌 Golang 写的接口。详细的对比可以看https://www.techempower.com/benchmarks/#sectiontestrunid7464e520-0dc2-473d-bd34-dbdfd7e85911hwphtestquerylzijzen-7推荐阅读1精品连载丨安卓 App 逆向课程一之环境配置2GitHub 热榜一款居家旅行必备的看片神器3教你轻松截获 Selenium 中的 Ajax 数据4如何用一条命令将网页转成电脑 App好文和朋友一起看~