FastAPI是一个现代、疾速(高机能)的Web框架,用于构建APIs,由Starlette跟Pydantic驱动。因为其简单性跟富强的机能,FastAPI已成为开辟疾速Web利用的热点抉择。但是,疾速开辟并不料味着可能忽视保险性。本文将探究如何在利用FastAPI时确保Web利用的保险性。
抉择一个保险的主机是确保FastAPI利用保险的基本。以下是一些关键点:
身份验证跟受权是Web利用保险的核心部分。以下是一些现实:
from fastapi import FastAPI, Depends, HTTPException, status
from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
app = FastAPI()
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
# 用户存储示例
fake_users_db = {
"johndoe": {"username": "johndoe", "password": "secret"}
}
@app.post("/token")
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
user_dict = fake_users_db.get(form_data.username)
if not user_dict or user_dict["password"] != form_data.password:
raise HTTPException(
status_code=status.HTTP_401_UNAUTHORIZED,
detail="Incorrect username or password",
headers={"WWW-Authenticate": "Bearer"},
)
return {"access_token": "secret", "token_type": "bearer"}
@app.get("/items/")
async def read_items(token: str = Depends(oauth2_scheme)):
return {"message": "Hello World"}
import os
from fastapi import FastAPI, Request
app = FastAPI()
# 利用情况变量存储数据库把柄
DATABASE_URL = os.getenv("DATABASE_URL")
@app.post("/items/")
async def create_item(request: Request):
data = await request.form()
# ... 利用参数化查询与数据库交互
return {"message": "Item created"}
FastAPI是一个功能富强的Web框架,可能用于疾速构建保险的利用。经由过程遵守上述最佳现实,你可能确保你的FastAPI利用存在富强的保险性。记取,保险性是一个持续的过程,须要按期更新跟保护。