Files
OSIT-AE-API-FastAPI/app/routers/items.py
2020-09-14 12:41:02 -04:00

44 lines
1.1 KiB
Python

from fastapi import APIRouter, HTTPException, status
from pydantic import BaseModel, EmailStr, Field
from typing import Dict, List, Optional, Set, Union
router = APIRouter()
class Image(BaseModel):
url: str
name: str
class Item(BaseModel):
name: str
description: Optional[str] = Field(None, example='A very nice Item')
price: float
tax: Optional[float] = None
is_offer: Optional[bool] = None
#tags: List[str] = [] # not unique tags
tags: Set[str] = set() # unique tags
image: Optional[Image] = None # one image
images: Optional[List[Image]] = None # or as a list of images
@router.get('/')
async def read_items():
return [{'name': 'Item Foo'}, {'name': 'item Bar'}]
@router.get('/{item_id}')
async def read_item(item_id: str):
return {'name': 'Fake Specific Item', 'item_id': item_id}
@router.put(
'/{item_id}',
tags=['Extra Tag'],
responses={403: {'description': 'Operation forbidden'}},
)
async def update_item(item_id: str):
if item_id != 'foo':
raise HTTPException(status_code=403, detail='You can only update the item: foo')
return {'item_id': item_id, 'name': 'The Fighters'}