티스토리 뷰
Query Parameters
Path Variable이 아닌 다른 함수 매개변수를 선언하면, 쿼리 매개변수로 자동 해석됩니다.
Query Parameter란 URL에서 ? 후에 나오는 값을 말합니다.
&로 구분되는 키-값 쌍의 집합
www.exmaple.com?size=10&page=1
size : 10/ page : 1 값입니다.
# 임시 데이터
mock_items_db = [
{"item_name": "Foo"},
{"item_name": "Bar"},
{"item_name": "Baz"}
]
@app.get("/items")
async def read_items(skip: int = 0, limit: int = 10):
return mock_items_db[skip : skip + limit]
- Path Variable과 마찬가지로 타입 지정이 가능하며, 기본값을 지정할 수 있습니다.
(skip: int = 0, limit: int = 10)
Null 허용
QueryParameter 중 선택적으로 선언할 수 있습니다.
from typing import Optional
@app.get("/items/{item_id}")
async def get_item(item_id : str, q: Optional[str] = None):
if q:
return {"item_id": item_id, "q": q}
return {"item_id": item_id}
Fast Api는 q = None이라는걸 선택적이라 인지합니다.
Optional은 Fast Api가 사용하는건 아니지만, 코드에서 오류를 찾아낼 수 있게 도와줍니다.
- q를 보내지 않은 경우
- q를 보낸 경우
Boolean Type
@app.get("/items/{item_id}")
async def get_item(item_id: str, q: Optional[str] = None, short: bool = False):
item = {"item_id": item_id}
if q:
item.update({"q": q})
if not short:
item.update(
{"description": "LOOOOOOONG Description."}
)
return item
- Result
예시로 아래 사진처럼 소개하는데 True 뜻을 가진 값은 True로 인식한다?
여러 경로 & 쿼리 매개변수
여러경로와 쿼리 매개변수를 동시에 선언해도 순서를 신경쓸 필요가 없습니다. Fast Api는 변수의 이름으로 감지합니다.
@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(
user_id: int, item_id: str, q: Optional[str] = None, short: bool = False
):
item = {"item_id": item_id, "owner_id": user_id}
if q:
item.update({"q": q})
if not short:
item.update(
{"description": "This is an amazing item"}
)
return item
정리
Query Parameter 조건별
조건 | 방법 |
require | item_id: str |
nullable | item_id: str = None |
default value | size: int = 10 |
이번 포스팅은 여기서 마무리하겠습니다.
모든 코드는 Github 에서 보실 수 있습니다.
틀린점과 개선할 점은 댓글로 알려주시면 감사하겠습니다.
'Dev > Python' 카테고리의 다른 글
[Fast Api] 2. Path Variable 사용해서 핸들러 매핑하기 (0) | 2021.06.09 |
---|---|
[Fast Api] 1. 처음 시작하기 (0) | 2021.06.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ResourceHttpReqeustHandler
- mapstruct
- 스프링시큐리티
- 웹서비스
- QueryDSL
- Security
- 스프링부트 시작하기
- JPA
- boot
- spring web
- java11
- 유사결과
- 개발
- Java
- Python
- paawordencoder
- @formula
- like절
- FastAPI
- 스프링
- API
- springboot
- 자바
- booleanExpression
- ControllerAdvice
- howtoinstallnginx
- 스프링부트
- Spring
- ubuntu
- springsecurity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함