Python 快速使用 REST API
最近一直在研究一个新的 Python 语言的API,在一位同事的建议下,我们决定使用 Fastapi 作为我们的框架。
Fastapi是一个基于python的框架,该框架鼓励使用Pydantic和OpenAPI(以前称为Swagger)进行文档编制,使用Docker进行快速开发和部署以及基于Starlette框架进行的简单测试。
它提供了许多好处,例如自动OpenAPI验证和文档编制,而无需添加不必要的膨胀。我认为,在不提供任何内置功能与提供太多内置功能之间取得很好的平衡。
入门
安装 fastapi 和 ASGI 服务器(例如uvicorn):
确保您使用的是Python 3.6.7+ 如果 pip
和python
给您python 2版本,则可能必须使用 pip3
和 python3
。另外,请查看我关于python入门的文章。
pip install fastapi uvicorn
并在main.py
文件中添加旧的“ hello world”:
from fastapi import FastAPI app = FastAPI() @app.get("/") def home(): return {"Hello": "World"}
运行开发
然后运行以进行开发,可以运行uvicorn main:app --reload
这就是简单服务器要做的全部!现在您可以检查 //localhost:8000/ 以查看“主页”。而且,如您所见,JSON响应“正常工作”!您还可以通过 //localhost:8000/docs 免费获得Swagger UI。
验证
如前所述,很容易验证数据(并为接受的数据格式生成Swagger文档)。只需从fastapi添加Query
导入,然后使用它来强制验证:
from fastapi import FastAPI, Query @app.get('/user') async def user( *, user_id: int = Query(..., title="The ID of the user to get", gt=0) ): return { 'user_id': user_id }
第一个参数...
是默认值,如果用户不提供值则提供该默认值。如果设置为None
,则没有默认值,并且该参数是可选的。为了没有默认值并且该参数是强制性的,请使用Ellipsis ,或...
代替。
如果运行此代码,则会在swagger UI上自动看到更新:
Swagger UI允许您查看新的/ user路由并使用特定的用户ID进行请求
如果您输入任何用户ID,您会看到它会自动为您执行请求,例如 //localhost:8000/user?user_id=1。在页面中,您只能看到回显了用户ID!
如果要改为使用路径参数(以使其为 /user/1
,则只需输入并使用Path
而不是Query
。也可以结合两者
Post 路线
如果您有POST
路由,则只需定义输入即可
@app.post('/user/update') async def update_user( *, user_id: int, really_update: int = Query(...) ): pass
在这种情况下,您可以看到user_id
仅被定义为一个没有Query
或Path
的整数;这意味着它将在POST请求正文中。如果您接受更复杂的数据结构,例如JSON数据,则应研究请求模型。
请求和响应模型
您可以使用Pydantic模型记录并声明详细的请求和响应模型。这不仅可以让您拥有所有模型的自动OpenAPI文档,而且还可以验证请求模型和响应模型,以确保输入的任何POST数据都是正确的,并且返回的数据也符合该模型。
只需像这样声明模型:
from pydantic import BaseModel class User(BaseModel): id:: int name: str email: str
然后,如果您希望将用户模型作为输入,则可以执行以下操作:
async def update_user(*, user: User): pass
或者,如果您要将其用作输出:
@app.get('/user') async def user( *, user_id: int = Query(..., title="The ID of the user to get", gt=0), response_model=User ): my_user = get_user(user_id) return my_user
路由和分解更大的API
您可以使用APIRouter
将api分解为路由。例如,我已经在我的 API 中找到了这个app / routers / v1 / __ init __。py
from fastapi import APIRouter from .user import router as user_router router = APIRouter() router.include_router( user_router, prefix='/user', tags=['users'], )
然后您可以在app / routers / v1 / user.py
中使用上面的用户代码-只需导入APIRouter
并使用@ router.get('/')< aaaa>
而不是 @ app.get('/ user')
。它会自动路由到 / user /
,因为该路由是相对于前缀的。
from fastapi import APIRouter router = APIRouter() @router.get('/') async def user( *, user_id: int = Query(..., title="The ID of the user to get", gt=0), response_model=User ): my_user = get_user(user_id) return my_user
最后,要在应用程序中使用所有v1
路由器,只需将main.py
编辑为:
from fastapi import FastAPI from app.routers import v1 app = FastAPI() app.include_router( v1.router, prefix="/api/v1" )
您可以通过这种方式随意链接路由器,从而允许您拆分大型应用程序并拥有版本化的API。
Dockerizing and Deploying
Fastapi 的作者使出乎意料的轻松之一就是 Dockerizing!默认的Dockerfile
是2行!
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7 COPY ./app /app
是否想通过自动重新加载进行 Dockerize 开发?这是我在撰写文件中使用的秘方:
version: "3" services: test-api: build: .. entrypoint: '/start-reload.sh' ports: - 8080:80 volumes: - ./:/app
这会将当前目录挂载为app
并将在任何更改时自动重新加载。您可能还想将app / app
用于更大的应用程序。
有用的网址
所有这些信息都来自 Fastapi网站,该文档具有出色的文档,我鼓励您阅读。此外,作者在 Gitter 上非常活跃并乐于助人!
结论
就是这样-我希望本指南对您有所帮助,并且您会像我一样喜欢使用 Fastapi。
推荐教程:Python教程
以上是Python 快速使用 REST API的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

VS Code可以在Windows 8上运行,但体验可能不佳。首先确保系统已更新到最新补丁,然后下载与系统架构匹配的VS Code安装包,按照提示安装。安装后,注意某些扩展程序可能与Windows 8不兼容,需要寻找替代扩展或在虚拟机中使用更新的Windows系统。安装必要的扩展,检查是否正常工作。尽管VS Code在Windows 8上可行,但建议升级到更新的Windows系统以获得更好的开发体验和安全保障。

VS Code 可用于编写 Python,并提供许多功能,使其成为开发 Python 应用程序的理想工具。它允许用户:安装 Python 扩展,以获得代码补全、语法高亮和调试等功能。使用调试器逐步跟踪代码,查找和修复错误。集成 Git,进行版本控制。使用代码格式化工具,保持代码一致性。使用 Linting 工具,提前发现潜在问题。

在 VS Code 中,可以通过以下步骤在终端运行程序:准备代码和打开集成终端确保代码目录与终端工作目录一致根据编程语言选择运行命令(如 Python 的 python your_file_name.py)检查是否成功运行并解决错误利用调试器提升调试效率

VS Code 扩展存在恶意风险,例如隐藏恶意代码、利用漏洞、伪装成合法扩展。识别恶意扩展的方法包括:检查发布者、阅读评论、检查代码、谨慎安装。安全措施还包括:安全意识、良好习惯、定期更新和杀毒软件。
