Search

Basic

1. Request

가. Paramater

1) type in request param
no type
→ response: path param으로 전달한 값이 문자열로 응답
{ "id": "1" }
Plain Text
복사
→ code
@app.get("/books/{book_id}") async def retrieve_books(book_id): return {"id": book_id}
Plain Text
복사
type을 int로 지정
→ response: path param으로 전달한 값이 지정된 타입으로 응답
{ "id": 1 }
Plain Text
복사
→ code
@app.get("/books/{book_id}") async def retrieve_books(book_id: int): return {"id": book_id}
Plain Text
복사
type을 int로 지정했지만 param을 문자열로 전달할 경우 에러 발생
→ log: "GET /books/hello HTTP/1.1" 422 Unprocessable Entity
→ response body
{ "detail": [ { "loc": [ "path", "book_id" ], "msg": "value is not a valid integer", "type": "type_error.integer" } ] }
Plain Text
복사
2) restrict path param with Enum
path param으로 전달하는 값이 Enum 클래스로 사전 정의된 값이 아니라면 에러 발생
→ response
{ "detail": [ { "loc": [ "path", "genre_name" ], "msg": "value is not a valid enumeration member; permitted: 'action', 'science-fiction', 'love-fiction'", "type": "type_error.enum", "ctx": { "enum_values": [ "action", "science-fiction", "love-fiction" ] } } ] }
Plain Text
복사
→ 코드 참고
3) set query parm
타입을 지정하면 필수값으로 인식됨
기본값 지정 가능
Optional 타입 활용하여 None 값을 기본값으로 지정 가능
→ response
{ "id": 1, "needy": "yes", "skip": 0, "limit": null }
Plain Text
복사
→ 코드 참고

Reference