Pull to refresh
5
0
Ilya Troy @lowadka

Пользователь

Send message
1.1 Пример автора статьи, по валидация уникальности, ломается конкурентными запросами, но он об этом узнает не сразу
> Brent Roоse привел несколько убедительных аргументов в пользу #[ ]:

> Такой же синтаксис в Rust.
Ого, уже 9-ая версия
Добавление ошибок бизнес логики?

Они все единого формата, т.е. на них у клиентов универсальный обработчик, соответственно и в документации такое не описываем.

А если все же на основе какой-то ошибки нужно построить логику – то этот момент пойдет уже в другой тип документации, в которой текстом описано как работать с методами и решать задачи.
Эти классы описывают входные и выходные параметры action'ов

Все верно, реквест модели выглядят примерно вот так:
Пример
<?php

namespace App\AcmeBundle\RequestModel;

use RestApiBundle\Annotation\RequestModel as Mapper;
use Symfony\Component\Validator\Constraints as Assert;
use RestApiBundle\RequestModelInterface;

class CreateMovie implements RequestModelInterface
{
    /**
     * @var string
     *
     * @Mapper\StringType()
     * @Assert\Length(min=3)
     */
    private $name;

    /**
     * @var string[]|null
     *
     * @Mapper\CollectionType(type=@Mapper\StringType(), nullable=true)
     */
    private $genres;
    
    ... getters and setters
}



А как вы, в таком случае, будете обрабатывать ошибочные случаи

Ошибок есть всего грубо говоря 3 вида:
1) Ошибки валидации/маппинга реквест модели – это бандл обработает сам и вернет клиенту ошибку, т.е. внутри action доступна уже чистая модель
2) Уникальные ошибки – это ошибки с каким-то своим поведением, например 404, 403 и тд, они отлавливаются и отдается json response вместо них + статус
3) Ошибки бизнес логики – это ошибки которые нужно показать пользователю, они тоже делаются через эксепшены, одна ошибка – один класс. Внутри каждого эксепшена можно указать константу для перевода, либо покажется дефолтный текст.
Спасибо. Оба решения видел, но мне они не зашли, на мой взгляд, можно лучше.
Проблема очень знакома, пишем долгое время документацию вручную, времени съедает много, часто случается что забыли что-то обновить, в общем не рабочее решение.

Сейчас разрабатываю rest-api-bundle для Symfony и тоже хочу реализовать там автогенерацию документации swagger. Но я пошёл другим путем, запросы и ответы в бандле описываются в виде классов, а уже по этим классам будет генерироваться json схема.
На 3 вещи можно смотреть вечно: огонь, воду и как badoo изобретают велосипеды :)
Если использовать реквести/респонс модели – можно на их основе генерировать json-схемы + добавив сюда пару анотаций с названием метода/описанием – можно сделать полноценную генерацию документации
Возможно я чего-то не понимаю, или этот подход не для меня, поэтому ответьте пожалуйста на вопрос:

Сейчас, грубо говоря, мы подгоняем хранение данных под то, как они будут использоваться. Т.е. данные в базах могут быть специально нормализованы под какой-то высоконагруженный endpoint и от этого будет профит. Но ведь получается сам подход GraphQL этому противоречит? А как с таким подходом борются с нагрузками?
Не хотелось бы никого обидеть, но ожидал большего от доклада :(
Форма и action выглядят как адское месиво, может для вас это и удобно, но поддерживать такой код «не очень удобно»
Можно было бы сделать console command listener, завязавшись на console.command, тогда бы не пришлось переписывать текущие команды
Академичность не должна соревноваться со скоростью написания кода и удобством, если анотации использовать нравится – не вижу причин этого не делать
В статье примерно тоже самое
Заголовок не оправдывает ожиданий.

Думал увидеть какую-то общую статью, где бы говорили про версионность, обратную совместимость и прочие проблемы и тд. А по факту получил рассказал про то, как плохо подошли к этому в вашей компании
Извиняюсь за возможно глупый вопрос, но не могли бы вы объяснить значение этого медицинского термина в данном контексте?
Он отлично подходит для сериализации объекта в json, но для обратного действия он умеет слишком мало, не может и половину фич data mapper`а
Если задачу решить через трансформеры, то это будет так же «в двух местах», только при этом в двух совсем разных местах. А в случае автора, если он использует аннотации, то «валидация» хоть и будет два раза, но описана она будет в одном месте, что имхо лучше.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity