Coverage for docs_src/path_operation_advanced_configuration/tutorial007.py: 100%

20 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-12-04 08:29 +0000

1from typing import List 1abcdefg

2 

3import yaml 1abcdefg

4from fastapi import FastAPI, HTTPException, Request 1abcdefg

5from pydantic import BaseModel, ValidationError 1abcdefg

6 

7app = FastAPI() 1abcdefg

8 

9 

10class Item(BaseModel): 1abcdefg

11 name: str 1abcdefg

12 tags: List[str] 1abcdefg

13 

14 

15@app.post( 1abcdefg

16 "/items/", 

17 openapi_extra={ 

18 "requestBody": { 

19 "content": {"application/x-yaml": {"schema": Item.model_json_schema()}}, 

20 "required": True, 

21 }, 

22 }, 

23) 

24async def create_item(request: Request): 1abcdefg

25 raw_body = await request.body() 1ovhpwiqxjrykszltAmuBn

26 try: 1ovhpwiqxjrykszltAmuBn

27 data = yaml.safe_load(raw_body) 1ovhpwiqxjrykszltAmuBn

28 except yaml.YAMLError: 1vwxyzAB

29 raise HTTPException(status_code=422, detail="Invalid YAML") 1vwxyzAB

30 try: 1ohpiqjrksltmun

31 item = Item.model_validate(data) 1ohpiqjrksltmun

32 except ValidationError as e: 1hijklmn

33 raise HTTPException(status_code=422, detail=e.errors(include_url=False)) 1hijklmn

34 return item 1opqrstu