/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
src/liquidcode/commands/templates/api.py.j2
66 строк
3 KB
User
0.4.11 - интеграция Pydantic для автоматической сериализации и десериализации моделей
06 июл 2026, 14:58
06 июл 2026, 14:58
d729128
Код
Авторство
О чём код?
from liquidcode import route from liquidcode.contracts import Request from liquidcode.http import HttpResponse {% if use_serializer %} from typing import Optional, List, Dict, Any from pydantic import BaseModel class {{ name }}Serializer(BaseModel): """Сериализатор для {{ name }}.""" {% for field in fields %} {{ safe_field_name(field.name) }}: {{ field.type }} {% endfor %} {% endif %} class {{ name }}APIController: """API-контроллер для {{ name }} (v{{ version }}).""" {% if 'index' in methods %} @route(r'/api/v{{ version }}/{{ route }}') def index(self, request: Request) -> HttpResponse: """GET /api/v{{ version }}/{{ route }} — список.""" return HttpResponse({'message': 'API v{{ version }} list'}) {% endif %} {% if 'show' in methods %} @route(r'/api/v{{ version }}/{{ route }}/{id:\d+}') def show(self, request: Request, id: int) -> HttpResponse: """GET /api/v{{ version }}/{{ route }}/{id} — запись.""" return HttpResponse({'message': f'API v{{ version }} show {id}'}) {% endif %} {% if 'create' in methods %} @route(r'/api/v{{ version }}/{{ route }}', methods=['POST']) def create(self, request: Request, data: {% if use_serializer %}{{ name }}Serializer{% else %}dict{% endif %}) -> HttpResponse: """POST /api/v{{ version }}/{{ route }} — создание.""" try: {% if use_serializer %} return HttpResponse({'message': 'API v{{ version }} create', 'data': data.model_dump()}, status=201) {% else %} return HttpResponse({'message': 'API v{{ version }} create', 'data': data}, status=201) {% endif %} except Exception as e: return HttpResponse({'error': str(e)}, status=400) {% endif %} {% if 'update' in methods %} @route(r'/api/v{{ version }}/{{ route }}/{id:\d+}', methods=['PUT']) def update(self, request: Request, id: int, data: {% if use_serializer %}{{ name }}Serializer{% else %}Optional[dict]{% endif %}) -> HttpResponse: """PUT /api/v{{ version }}/{{ route }}/{id} — обновление.""" try: {% if use_serializer %} return HttpResponse({'message': f'API v{{ version }} update {id}', 'data': data.model_dump() if data else {}}) {% else %} return HttpResponse({'message': f'API v{{ version }} update {id}', 'data': data or {}}) {% endif %} except Exception as e: return HttpResponse({'error': str(e)}, status=400) {% endif %} {% if 'delete' in methods %} @route(r'/api/v{{ version }}/{{ route }}/{id:\d+}', methods=['DELETE']) def delete(self, request: Request, id: int) -> HttpResponse: """DELETE /api/v{{ version }}/{{ route }}/{id} — удаление.""" return HttpResponse(status=204) {% endif %}