python快速入门,快速学会python
最近在研究一种新Python语言的API。在一个同事的建议下,我们决定使用Fastapi作为我们的框架。
Fastapi是一个基于python的框架,鼓励使用Pydantic和OpenAPI(原名Swagger)进行文档化,使用Docker进行快速开发和部署,基于Starlette框架进行简单测试。
它提供了许多好处,比如自动OpenAPI验证和文档,而没有增加不必要的膨胀。我觉得在不提供任何内置功能和提供太多内置功能之间有一个很好的平衡。
00-1010安装fastapi和ASGI服务器(例如uvicorn):
如果确保您使用的是Python 3.6.7+pip和python给你Python版本2,你可能不得不用pip3和python3。另外,请查看我关于python入门的文章。
安装pip fastapi uvicorn并在main.py文件中添加旧的“hello world ”:
从fastapi导入FastAPI
app=FastAPI()
@app.get(/)
def home():
返回{hello : world}
入门
然后运行开发。你可以运行uvicon main : app-reload这就是简单服务器要做的一切!现在可以勾选//localhost 33608000/查看“主页”了。正如您所见,JSON响应“有效”!还可以在//localhost:8000/docs免费获得Swagger UI。
00-1010如前所述,很容易验证数据(并为接受的数据格式生成Swagger文档)。只需添加从fastapi导入的查询,然后使用它来强制验证:
从fastapi导入FastAPI,查询
@app.get(/user )
异步定义用户(
*,
user_id: int=Query(.title=要获取的用户的ID ,gt=0)
):
return的第一个参数{user _ id 3360user _ id}.是默认值,如果用户没有提供值,则会提供该值。如果设置为None,则没有默认值,该参数是可选的。为了没有默认值并且该参数是强制性的,请使用省略号或.相反。
如果您运行这段代码,您将在swagger UI上自动看到更新:
Swagger UI允许您查看新的/用户路线,并使用特定的用户ID进行请求。
如果输入任意一个用户ID,就会看到它会自动为你执行请求,例如///localhost:8000/user?user_id=1 .在页面中,你只能看到用户ID被回显!
如果您想使用path参数(因此它是/user/1),只需输入并使用Path而不是Query。也可以两者结合。
00-1010如果有POST路由,只需定义输入即可。
@app.post(/user/update )
异步定义更新_用户(
*,
user_id: int,
really_update: int=Query(.)
):
在这种情况下通过
下,您可以看到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您可以通过这种方式随意链接路由器,从而允许您拆分大型应用程序并拥有版本化的API。from app.routers import v1
app = FastAPI()
app.include_router(
v1.router,
prefix="/api/v1"
)
Dockerizing and Deploying
Fastapi 的作者使出乎意料的轻松之一就是 Dockerizing!默认的Dockerfile
是2行!
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.7是否想通过自动重新加载进行 Dockerize 开发?这是我在撰写文件中使用的秘方:COPY ./app /app
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的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。