36 changed files with 16 additions and 284 deletions
@ -1,7 +1,6 @@ |
|||||
from typing import Union |
from typing import Annotated, Union |
||||
|
|
||||
from fastapi import FastAPI, Query |
from fastapi import FastAPI, Query |
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
app = FastAPI() |
||||
|
|
||||
@ -1,16 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items( |
|
||||
q: Annotated[Union[str, None], Query(min_length=3, max_length=50)] = None, |
|
||||
): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,18 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items( |
|
||||
q: Annotated[ |
|
||||
Union[str, None], Query(min_length=3, max_length=50, pattern="^fixedquery$") |
|
||||
] = None, |
|
||||
): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,12 +0,0 @@ |
|||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: Annotated[str, Query(min_length=3)] = "fixedquery"): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,12 +0,0 @@ |
|||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: Annotated[str, Query(min_length=3)]): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,14 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: Annotated[Union[str, None], Query(min_length=3)]): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,16 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items( |
|
||||
q: Annotated[Union[str, None], Query(title="Query string", min_length=3)] = None, |
|
||||
): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,23 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items( |
|
||||
q: Annotated[ |
|
||||
Union[str, None], |
|
||||
Query( |
|
||||
title="Query string", |
|
||||
description="Query string for the items to search in the database that have a good match", |
|
||||
min_length=3, |
|
||||
), |
|
||||
] = None, |
|
||||
): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,14 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: Annotated[Union[str, None], Query(alias="item-query")] = None): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,27 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items( |
|
||||
q: Annotated[ |
|
||||
Union[str, None], |
|
||||
Query( |
|
||||
alias="item-query", |
|
||||
title="Query string", |
|
||||
description="Query string for the items to search in the database that have a good match", |
|
||||
min_length=3, |
|
||||
max_length=50, |
|
||||
pattern="^fixedquery$", |
|
||||
deprecated=True, |
|
||||
), |
|
||||
] = None, |
|
||||
): |
|
||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} |
|
||||
if q: |
|
||||
results.update({"q": q}) |
|
||||
return results |
|
||||
@ -1,11 +0,0 @@ |
|||||
from typing import List, Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: Union[List[str], None] = Query(default=None)): |
|
||||
query_items = {"q": q} |
|
||||
return query_items |
|
||||
@ -1,12 +0,0 @@ |
|||||
from typing import List, Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: Annotated[Union[List[str], None], Query()] = None): |
|
||||
query_items = {"q": q} |
|
||||
return query_items |
|
||||
@ -1,11 +0,0 @@ |
|||||
from typing import List |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: List[str] = Query(default=["foo", "bar"])): |
|
||||
query_items = {"q": q} |
|
||||
return query_items |
|
||||
@ -1,12 +0,0 @@ |
|||||
from typing import List |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: Annotated[List[str], Query()] = ["foo", "bar"]): |
|
||||
query_items = {"q": q} |
|
||||
return query_items |
|
||||
@ -1,10 +0,0 @@ |
|||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items(q: Annotated[list, Query()] = []): |
|
||||
query_items = {"q": q} |
|
||||
return query_items |
|
||||
@ -1,16 +0,0 @@ |
|||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI, Query |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items( |
|
||||
hidden_query: Annotated[Union[str, None], Query(include_in_schema=False)] = None, |
|
||||
): |
|
||||
if hidden_query: |
|
||||
return {"hidden_query": hidden_query} |
|
||||
else: |
|
||||
return {"hidden_query": "Not found"} |
|
||||
@ -1,31 +0,0 @@ |
|||||
import random |
|
||||
from typing import Union |
|
||||
|
|
||||
from fastapi import FastAPI |
|
||||
from pydantic import AfterValidator |
|
||||
from typing_extensions import Annotated |
|
||||
|
|
||||
app = FastAPI() |
|
||||
|
|
||||
data = { |
|
||||
"isbn-9781529046137": "The Hitchhiker's Guide to the Galaxy", |
|
||||
"imdb-tt0371724": "The Hitchhiker's Guide to the Galaxy", |
|
||||
"isbn-9781439512982": "Isaac Asimov: The Complete Stories, Vol. 2", |
|
||||
} |
|
||||
|
|
||||
|
|
||||
def check_valid_id(id: str): |
|
||||
if not id.startswith(("isbn-", "imdb-")): |
|
||||
raise ValueError('Invalid ID format, it must start with "isbn-" or "imdb-"') |
|
||||
return id |
|
||||
|
|
||||
|
|
||||
@app.get("/items/") |
|
||||
async def read_items( |
|
||||
id: Annotated[Union[str, None], AfterValidator(check_valid_id)] = None, |
|
||||
): |
|
||||
if id: |
|
||||
item = data.get(id) |
|
||||
else: |
|
||||
id, item = random.choice(list(data.items())) |
|
||||
return {"id": id, "name": item} |
|
||||
Loading…
Reference in new issue