Ваша модель Pydantic (которая используется в FastAPI) может как определить значение по умолчанию для поля словаря (JSON), так и установить его как `None`, если вы хотите разрешить его опускание. Вам нужно будет импортировать `BaseModel` из `pydantic`, и затем создать модель, содержащую ваше поле `coord`. Пример модели, включая поле `coord` со значением по умолчанию `None`:
```python
from typing import Optional, Dict
from pydantic import BaseModel
class MyModel(BaseModel):
coord: Optional[Dict] = None
```
Здесь тип поля `coord` указан как `Optional[Dict]`, это означает, что `coord` может быть либо `None`, либо словарем (`Dict`). Вы также указали значение по умолчанию `= None`, что будет присваиваться, если поле `coord` не будет передано при создании объекта `MyModel`.
Теперь вы можете использовать эту модель в FastAPI для валидации входящего JSON запроса:
```python
from fastapi import FastAPI, Body
from pydantic import BaseModel
from typing import Optional, Dict
app = FastAPI()
class MyModel(BaseModel):
coord: Optional[Dict] = None
@app.post("/items/")
async def create_item(item: MyModel):
# Если 'coord' не был предоставлен, он будет None
return {"coord": item.coord}
```
В этом примере FastAPI API запрос на `POST /items/` будет принимать JSON данные, которые валидируются с помощью `MyModel`. Если ключ `coord` в JSON отсутствует, FastAPI автоматически установит значение поля `coord` как `None` в вашем экземпляре `MyModel`. Если ключ `coord` присутствует, он должен соответствовать структуре словаря, иначе будет возвращена ошибка валидации.
Обратите внимание, что FastAPI автоматически документирует ваше API и информирует пользователей о том, что поле `coord` необязательно и может принимать значение `null`.