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
« prev ^ index » next coverage.py v7.6.1, created at 2025-12-04 08:29 +0000
1from typing import List 1abcdefg
3import yaml 1abcdefg
4from fastapi import FastAPI, HTTPException, Request 1abcdefg
5from pydantic import BaseModel, ValidationError 1abcdefg
7app = FastAPI() 1abcdefg
10class Item(BaseModel): 1abcdefg
11 name: str 1abcdefg
12 tags: List[str] 1abcdefg
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