fastapi 接口使用代码
时间: 2023-09-20 09:10:01 浏览: 202
以下是一个使用 FastAPI 创建简单接口的示例代码:
```python
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
```
这个示例应用程序定义了两个路由:
- `/`:GET 请求将返回 `{"Hello": "World"}`。
- `/items/{item_id}`:GET 请求将返回一个JSON对象,其中包含ID和查询参数(如果有)。
您可以将此代码保存在名为 `main.py` 的文件中,然后使用以下命令运行它:
```
uvicorn main:app --reload
```
这将启动一个开发服务器,并在 `http://localhost:8000` 上运行您的应用程序。您可以使用浏览器或任何 HTTP 客户端工具(如 Postman)来与您的接口进行交互。
相关问题
fastapi接口文档
FastAPI提供了一个强大的接口文档功能,可以帮助我们更好地理解和使用API。我们可以使用FastAPI创建具有详细说明的接口文档。通过使用装饰器[@app.get/@app.post]以及参数注释,我们可以为每个接口指定标题、描述、路径和标签等信息。例如,我们可以使用以下代码创建一个简单的接口文档:
```python
from fastapi import FastAPI
app = FastAPI(title='第一个Fast API应用程序', description='整体描述')
@app.get(path='/', summary='接口注释', description='接口描述', tags=['Root'])
async def read_root():
return {"Hello": "World"}
```
在上面的例子中,我们使用了`@app.get`装饰器来指定了一个GET请求的接口,路径为`/`。我们还指定了该接口的标题、描述和标签等信息。接口的具体实现在`read_root`函数中,它返回了一个字典。
通过访问`http://localhost/docs`,我们可以在浏览器中查看生成的接口文档。接口文档会显示每个接口的详细信息,包括标题、描述、路径、标签以及接口参数的类型和说明等。这样,我们可以清晰地了解每个接口的作用和使用方式。
总之,使用FastAPI可以方便地创建具有详细接口文档的接口服务。接口文档可以帮助我们更好地理解和使用API,提高开发效率。
python fastapi接口鉴权方法
FastAPI支持基于Bearer Token的鉴权方法,可以使用FastAPI自带的Depends函数结合PyJWT库实现。
以下是一个示例代码:
```python
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import OAuth2PasswordBearer
import jwt
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
def verify_token(token: str):
try:
payload = jwt.decode(token, "secret_key", algorithms=["HS256"])
username = payload.get("sub")
if username is None:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid authentication credentials",
headers={"WWW-Authenticate": "Bearer"},
)
except jwt.exceptions.DecodeError:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Invalid authentication credentials",
headers={"WWW-Authenticate": "Bearer"},
)
def get_current_user(token: str = Depends(oauth2_scheme)):
verify_token(token)
return token
@app.get("/protected")
async def protected_route(token: str = Depends(oauth2_scheme)):
return {"token": token}
```
在这个示例中,verify_token函数用于验证JWT Token的有效性,get_current_user函数用于获取当前用户信息,protected_route函数需要鉴权才能访问。在访问protected_route时,会自动调用get_current_user函数进行鉴权。如果鉴权失败,会返回401 Unauthorized错误。
阅读全文