python - 如果路径相同,则忽略其中一个路径操作,但其中一个具有查询参数
问题描述
我想要两个具有相同路径的路径操作@app.get("/movies/", ..)
:
@app.get("/movies/", response_model=schemas.Movie)
def read_movie_by_title(title: str, db: Session = Depends(get_db)):
db_movie = crud.get_movie_by_title(db, title=title)
return db_movie
@app.get("/movies/", response_model=List[schemas.Movie])
def read_movies(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
db_movies = crud.get_movies(db, skip=skip, limit=limit)
return db_movies
如您所见,第一个用于通过标题获取电影并具有查询参数 ( title
),第二个用于获取列表。当我检查生成的文档时,read_movie_by_title
缺少一个 for 。
我试图通过删除来更改read_movie_by_title
to的路径来解决这个问题,但我根本不喜欢这个解决方案。/movies
/
所以问题是:有没有办法让两条相等的路径,但一条带有查询参数,还是我需要以不同的方式来做这件事?有什么建议么?
解决方案
您可以通过将端点更改为"/movies/{title}"
:
@app.get("/movies/{title}", response_model=schemas.Movie)
def read_movie_by_title(title: str, db: Session = Depends(get_db)):
db_movie = crud.get_movie_by_title(db, title=title)
return db_movie
# 2nd remains the same
@app.get("/movies/", response_model=List[schemas.Movie])
def read_movies(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
db_movies = crud.get_movies(db, skip=skip, limit=limit)
return db_movies
推荐阅读
- php - 如何通过表中的 id(1-3) 等特定 id 范围从数据库中获取数据?
- swift - 在 Swift 4 中退出 Firebase
- c - 将 16 位正数转换为二进制的程序
- reactjs - 只是为了一劳永逸,您究竟如何更新工作存储库中的 npm 包?
- sql - 如何使用 JPQL 查询存储为 BINARY(16) 的 UUID
- db2 - DB2:是否可以从应用程序禁止密码和使用可信连接连接到 DB2
- http - 将 api 密钥注入谷歌脚本的 UrlFetchApp 以获取 HTTP 请求
- c++ - 将 2D 数组转换为 1D 数组,其元素为 2D 数组中的值的总和
- javascript - JS中的console.log是浏览器提供的Web Api的一部分吗
- javascript - 如何从 flatpickr 中获取选定的日期