
Sergey
27.03.2018
16:08:03
не думаю что ты меня понял)

Konstantin
27.03.2018
16:08:05
а сейчас время от времени в частном чате возникают вопросы "почему не работает" )
ну, где без версионирования

Sergey
27.03.2018
16:08:19

Google

Konstantin
27.03.2018
16:08:31
там модели данных просто толстеют и толстеют а люди забывают ставить депрекейтед например на каких то параметрах
а версия не меняется. ни адреса, ни номинально
понятно что апи развивается но потом начались смешные правила типа "если указали А не указывайте Б потому что будет ошибка"


Sergey
27.03.2018
16:09:49
а версия не меняется. ни адреса, ни номинально
ну даже если ты не юзаешь версионирование - "какую-то" версию на которую расчитывает клиент тебе надо присылать. Тебе ж надо как-то знать все ли обновились и можно дропать совместимость.
но это даже близко не походит на варианты версионирования на урлах (ты думаю и сам понимаешь что это рак), и очень отдаленно напоминает вариант через content negotiation
это больше про процессы и то как ты работаешь с клиентами твоей API
типа та же штука что теги для билдов твоего приложения - это не влияет на то как ты код пишешь но для процесса это важно
повторюсь - как бы ты не делал - на стороне приложения, на стороне логики приложения, у тебя должна быть обратная совместимость, ты ж не можешь сделать 2 приложения которые будут работать по разному в зависимости от клиента
и если тебе надо суппортить API в течении года - то и на уровне приложения обратную совместимость придется делать
p.s. штуки типа graphql позволяют вообще не заморачиваться ибо ты всегда знаешь какие клиенты что юзают, это решает вопрос "когда депрекейтед штуки можно удалить"


Konstantin
27.03.2018
16:14:58
ты сам делал уже на грфе?

Sergey
27.03.2018
16:15:23
да, пока маленькую апишечку

Konstantin
27.03.2018
16:15:29
там же наверное ппц геморой настраивать лимиты выборки

Google

Sergey
27.03.2018
16:15:43
для публичного API гемороя конечно больше, но похожие проблемы и с http api) только больше для клиента)
если клиенту ну вот надо достать кучу данных - он достанет, просто сделает N запросов
а с точки зрения секьюрити атаки отражать - это примерно одинаково сложно
в случае http api у тебя из вариантов рэйт лимит, а в graphql - стоимость подключения филда

Konstantin
27.03.2018
16:18:57
а еще каждый из N запросов может быть по отдельности быстрее чем 1 общий на граф. клиент просто начнет какие то данные получать быстрее.
понятно что все запросы дольше будут

Sergey
27.03.2018
16:19:34
> а еще каждый из N запросов может быть по отдельности быстрее
быстрее конечно, но добавь к этому лэтенси (особенно мобильных сетей), даже http2 тебе тут не особо спасет
ну и если у тебя именно граф - то есть какие-то связанные вещи, все запросы паралельно послать не выйдет
и graphql начинает уже выигрывать)
правда на запись на graphql сделано как по мне убого но жить можно
ну и вообще graphql не надо воспринимать как "убийцу rest" - оно хорошо дополняет друг друга)

Konstantin
27.03.2018
16:25:14
чуваки, прерву ваши возвышенные беседы о вечном
а не появилось какой нормальной альтернативы свифтмейлеру?

Sergey
27.03.2018
16:26:17
есть конечно PHPMailer но это то же самое примерно
многие просто переключаются потиху на всякие sendgrid-ы или mailgun-ы и шлют не через smtp а через апишки
а для smtp - лучше сэндгрида ниче нет

Konstantin
27.03.2018
16:32:33
да, я тоже сильно за хттп вместо смтп
но тогда надо очереди свои городить
а поцфекс это все сам делает за тебя

Google

Konstantin
27.03.2018
16:32:54
знай шли себе в локалхост
но там смтп нужен =/

Денис
27.03.2018
17:39:11

Vladislav
27.03.2018
18:16:40
Возьми nelmioapidoc и все будет хорошо

Sergey
27.03.2018
18:17:25
(у сваггера чуть лучше). Почти все кастомные лесапеды ищут (и почти всегда на ноде потому что расчитывать на нормальные тулы на php не приходится)

Bohdan
27.03.2018
18:27:05
ага, интересовался такими штуками
все тлен, разве писать под сваггер вручную (и под 3)

Sergey
27.03.2018
18:31:09

Bohdan
27.03.2018
18:31:47
я же хотел интеграции с json schema
а в неё умеет только третий сваггер
а в него никто не умеет)

Денис
27.03.2018
19:39:12
спасибо за ответы )

Vladislav
27.03.2018
19:58:48
или нет)
та там все ок, там от nelmio парсинг роутинга, сущностей и форм. все остальное php swagger

Sergey
27.03.2018
19:59:50

Vladislav
27.03.2018
20:00:41
я не буду спорить, потому что оно все так)

Petr
27.03.2018
20:03:10
Мы пишем все в yaml-файлах, обмазываемся рефами, дробим все на мелкие файлы, а на выходе получаетчя один скомпилированный json-файл
Смущает только скудная экосистема вокруг openapi 3. Даже банального валидатора доки найти не удалось, поэтому проебы замечаются лишь спустя какое-то время

Bohdan
27.03.2018
20:14:57

Google

Petr
27.03.2018
20:19:53
во, та же фигня
формат хорош, но экосистемы йок
До формата тоже можно доклпаться. Например, там нельзя два разных респонса на один статус код повесить. Ухх. Приходится изголяться, делая ключи вида 400 (Validation Error) и 400 (Invalid JSON)

Bohdan
27.03.2018
20:20:28
по крайней мере он мощнее иных

Sergey
27.03.2018
20:26:44
вдруг кого-то заинтересует: https://vaughnvernon.co/?p=942
The Ideal Domain-Driven Design Aggregate Store?

Marat
27.03.2018
22:55:44

Artem
28.03.2018
03:33:38

Vladislav
28.03.2018
03:35:44

Admin
ERROR: S client not available

Vladislav
28.03.2018
03:35:53
Это была шутка скорее всего

Shmaltorhbooks
28.03.2018
07:52:51
http://symfony.com/blog/new-in-symfony-4-1-messenger-component

Bohdan
28.03.2018
07:56:05
о, его уже прямо воткнули
неделю назад там был один коммит кажись)

Dmitriy
28.03.2018
08:17:22
крутяг
можно будет развернуть мессаджориентированную архитектуру )

Greabock
28.03.2018
08:21:51
Может кто помнит, был у меня косяк с доктриной и постгрес. Дифф генерировал лишние действия в миграции. (Типа приведение к datetimetz, то что и так TIMESTAMP(0) WITH TIME ZONE).
Так вот я разобрался. Косяк связан с потерявшимися доктриноваскими комменитами вида (DC2Type:datetimetz). Вот такая вот херня... кто ж знал что доктрин юзает комменты, как мету к таблицам...

Andrew
28.03.2018
08:23:49

Dmitriy
28.03.2018
08:25:03
будет монолит на мессаджах
вместо иньекции сервисов в экшн, будем диспатчить мессаджи

Dmitriy
28.03.2018
08:25:45
дык есть евент диспетчер

Dmitriy
28.03.2018
08:25:55
это евенты

Dmitriy
28.03.2018
08:25:58
т.е. ты мог такое делать уже лет как 10)

Google

Andrew
28.03.2018
08:26:04
https://github.com/php-enqueue/async-event-dispatcher

Dmitriy
28.03.2018
08:26:05
мессаджи это наоборот

Andrew
28.03.2018
08:26:23
и точно command bus поддерживает асинхронный диспатчинг команд

Dmitriy
28.03.2018
08:26:55

Alan
28.03.2018
08:27:56
а если много ивентов и много мессаджей?)

Dmitriy
28.03.2018
08:28:05
и это все различие) в нескольких строках кода

Konstantin
28.03.2018
08:41:28
может ивенты это в пределах одной системы, а мессаджи между разными системами, не?

Andrey
28.03.2018
08:42:06
ивенты можно тоже в бекграунд отправлять

Bohdan
28.03.2018
08:42:14
и где-то там ларавел пробегал

Alan
28.03.2018
08:57:27
ну мб эвент это мессадж который описывает кто его кинул (причина) и имеет какой то контекст
а мессадж это прост данные

Konstantin
28.03.2018
09:09:37
+1

Alexey
28.03.2018
09:10:19
@spudro а чем не устраивает стандарный механизм подключения ExceptionHandler через конфиг? (через event'ы)
просто любопытно

Pavel
28.03.2018
09:11:11
kernel.exception

Alexey
28.03.2018
09:11:35
через kernel.exception, да
подключение ExceptionListener по сути то же самое, что и ExceptionHandler