写过API的同学都懂,这活儿可不轻松。要考虑性能、文档、类型校验,还得操心并发和扩展性。不过Python这边有个叫 FastAPI 的新玩意儿,用起来是真爽!它把所有这些烦心事都给解决了。
装个FastAPI贼简单,pip一条命令就搞定:
pip install fastapi uvicorn
装完就能用!让咱整个最基础的API试试水:
from fastapi import FastAPI
app = FastAPI()
@app.get(“/”)
def hello_world():
return {“message”:“你好啊,朋友!”}
运行这段代码:
uvicorn main:app --reload
浏览器访问 http://localhost:8000,看到JSON格式的问候信息,这就整好了!
温馨提示:别忘了装uvicorn,它是个超棒的ASGI服务器,FastAPI离了它可不行。
FastAPI跟Python的类型提示是好哥们,写代码舒服得很:
from fastapi import FastAPI
from pydantic import BaseModel
class User(BaseModel):
name:str
age:int
is_cool:bool = True
app = FastAPI()
@app.post(“/users/”)
def create_user(user:User):
return user
瞧见没?写个API接口就跟写普通Python代码一样自然。参数类型都标注好了,FastAPI自动帮你做参数校验,省心!
别的框架写完API还得专门去写文档,FastAPI直接给你整出来:
@app.get(“/items/{item_id}”)
def read_item(item_id:int, q:str = None):
“”“
获取商品信息
- item_id:商品ID
- q:搜索关键词
”“”
return {“item_id”:item_id, “q”:q}
访问 /docs 路径,漂亮的Swagger文档就出来了!还能直接在线调试,这待遇也太好了。
现在都讲究高并发,FastAPI原生支持异步编程:
@app.get(“/async-items/”)
async def read_items():
items = await database.fetch_all(“SELECT * FROM items”)
return items
写异步代码就这么简单,FastAPI帮你处理好了全部细节。性能杠杠的!
要是想在多个接口之间共享代码,依赖注入系统简直不要太方便:
from fastapi import Depends
def get_current_user(token:str):
# 验证token的逻辑
@app.get(“/me”)
def read_me(current_user = Depends(get_current_user)):
return current_user
代码复用不用愁,模块化开发轻松搞定。
温馨提示:依赖函数可以是普通函数,也可以是异步函数,FastAPI都能处理。
Python的世界里框架是真不少,但FastAPI属实让人眼前一亮。性能好、写起来舒服、文档齐全,关键是跟Python的新特性结合得特别紧密。要是你也在写API,不妨试试这个宝贝,准能让你coding效率飙升!
领取专属 10元无门槛券
私享最新 技术干货