/
liquid-g
/
liquid-code
Обзор
Документация
Войти
/
liquid-g
/
liquid-code
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop-0.4
examples/dto_example.py
76 строк
3 KB
User
0.4.13 - Request/Response DTO с генератором make:dto и полная структура документации по маршрутизации" -m "- Добавлен генератор DTO: lcc make:dto <name> с валидацией через Pydantic
06 июл 2026, 16:08
06 июл 2026, 16:08
01392a9
Код
Авторство
О чём код?
"""Пример использования DTO в контроллере.""" from liquidcode import route from liquidcode.contracts import Request from liquidcode.http import HttpResponse from pydantic import BaseModel, Field class UserDTO(BaseModel): """DTO для пользователя.""" id: int name: str = Field(min_length=1, max_length=255) email: str = Field(pattern=r"^[^@]+@[^@]+\.[^@]+$") class CreateUserData(BaseModel): """Данные для создания пользователя.""" name: str = Field(min_length=1, max_length=255) email: str = Field(pattern=r"^[^@]+@[^@]+\.[^@]+$") password: str = Field(min_length=8) class UserController: """Контроллер для управления пользователями.""" @route('/api/users', methods=['POST']) def create(self, request: Request, data: CreateUserData) -> HttpResponse: """ Создание пользователя. Тело запроса десериализуется в CreateUserData. Возвращает созданного пользователя. """ user = UserDTO( id=1, name=data.name, email=data.email ) return HttpResponse(user, status=201) @route('/api/users/{id}') def show(self, request: Request, id: int) -> HttpResponse: """Получение пользователя по ID.""" user = UserDTO( id=id, name="John Doe", email="john@example.com" ) return HttpResponse(user) @route('/api/users') def list(self) -> HttpResponse: """Список всех пользователей.""" users = [ UserDTO(id=1, name="John", email="john@example.com"), UserDTO(id=2, name="Jane", email="jane@example.com"), ] return HttpResponse(users) # Для тестирования if __name__ == '__main__': from liquidcode import Application from src.Controller.UserController import UserController app = Application() controller = UserController() app.add_route('/api/users', 'POST', controller.create) app.add_route('/api/users/{id}', 'GET', controller.show) app.add_route('/api/users', 'GET', controller.list) print("Запущен сервер для тестирования DTO.") print("Попробуйте:") print(" POST /api/users - с телом {\"name\": \"John\", \"email\": \"john@example.com\", \"password\": \"secret123\"}") print(" GET /api/users - список пользователей") print(" GET /api/users/1 - пользователь с ID 1")