依赖项 - Depends()
和 Security()
¶
Depends()
¶
依赖项主要通过特殊的函数 Depends()
来处理,该函数接受一个可调用对象。
这是其及其参数的参考。
你可以直接从 fastapi
导入它
from fastapi import Depends
fastapi.Depends ¶
Depends(dependency=None, *, use_cache=True)
声明一个 FastAPI 依赖项。
它接受一个 "可依赖的" 可调用对象(如函数)。
不要直接调用它,FastAPI 会为你调用它。
在 FastAPI 依赖项文档 中阅读更多相关内容。
示例
from typing import Annotated
from fastapi import Depends, FastAPI
app = FastAPI()
async def common_parameters(q: str | None = None, skip: int = 0, limit: int = 100):
return {"q": q, "skip": skip, "limit": limit}
@app.get("/items/")
async def read_items(commons: Annotated[dict, Depends(common_parameters)]):
return commons
参数 | 描述 |
---|---|
dependency
|
一个“可依赖的”可调用对象(如函数)。 不要直接调用它,FastAPI 会为你调用它,只需直接传递对象即可。
类型: |
use_cache
|
默认情况下,当一个依赖项在请求中首次被调用后,如果该依赖项在请求的其余部分中再次声明(例如,如果多个依赖项需要它),则该值将被重用于请求的其余部分。 将
类型: |
源代码位于 fastapi/param_functions.py
2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 |
|
Security()
¶
对于许多场景,你可以使用依赖项(即 Depends()
)来处理安全(授权、认证等)。
但是当你还想声明 OAuth2 范围时,你可以使用 Security()
而不是 Depends()
。
你可以直接从 fastapi
导入 Security()
from fastapi import Security
fastapi.Security ¶
Security(dependency=None, *, scopes=None, use_cache=True)
声明一个 FastAPI 安全依赖项。
与普通依赖项的唯一区别是它可以声明 OAuth2 范围,这些范围将与 OpenAPI 和自动 UI 文档(默认在 /docs
)集成。
它接受一个 "可依赖的" 可调用对象(如函数)。
不要直接调用它,FastAPI 会为你调用它。
在 FastAPI 安全文档 和 FastAPI OAuth2 范围文档 中阅读更多相关内容。
示例
from typing import Annotated
from fastapi import Security, FastAPI
from .db import User
from .security import get_current_active_user
app = FastAPI()
@app.get("/users/me/items/")
async def read_own_items(
current_user: Annotated[User, Security(get_current_active_user, scopes=["items"])]
):
return [{"item_id": "Foo", "owner": current_user.username}]
参数 | 描述 |
---|---|
dependency
|
一个“可依赖的”可调用对象(如函数)。 不要直接调用它,FastAPI 会为你调用它,只需直接传递对象即可。
类型: |
scopes
|
使用此 Security 依赖项的路径操作所需的 OAuth2 范围。 "范围"一词来自 OAuth2 规范,它似乎故意模糊且可解释。它通常指权限,在某些情况下指角色。 这些范围与 OpenAPI(以及
类型: |
use_cache
|
默认情况下,当一个依赖项在请求中首次被调用后,如果该依赖项在请求的其余部分中再次声明(例如,如果多个依赖项需要它),则该值将被重用于请求的其余部分。 将
类型: |
源代码位于 fastapi/param_functions.py
2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 |
|