
Denis
09.08.2018
20:03:08

Maksim
09.08.2018
20:03:12

Denis
09.08.2018
20:03:20
но поднять блокчейн на расте это да) за милую душу)

Sergey
09.08.2018
20:03:25

Google

Sergey
09.08.2018
20:03:38
она молодая очень но все там есть

Denis
09.08.2018
20:04:10
ну в плане стороних пакетов) как-то маловато, большая часть в версия 0.0.x и непонятно развиваются или нет)
но язык хорош, после пхп особенно

Sergey
09.08.2018
20:07:20
хз, я иногда брожу по гитхабу в поисках интересных php-ных либ и больше грущу. А на расте видел уже с десяток интересных проектов. По поводу того что они все 0.0.x - ну да... с другой стороны найди мне на php либу такого уровня: https://github.com/diesel-rs/diesel

Denis
09.08.2018
20:08:15
я больше напрягался когда приходилось допиливать либы на расте, чем искать омр под пыху)

Igor A.
09.08.2018
20:27:00
Всем привет. Скажите, есть ли аналог аргумент резолвера симфонийского для ответов? То есть чтобы респонсы определенного типа ловить, на их основе генерировать другие и отдавать.
Простите, если это общеизвестно, а я плохо гуглю, ткните меня туда :)

F01134H
09.08.2018
20:30:01
Скажи для начала чем тебе симфоневский не угодил

Igor A.
09.08.2018
20:31:04

Andrew
09.08.2018
20:31:14

F01134H
09.08.2018
20:31:16
А, неправильно прочитал

Борис
09.08.2018
20:31:49

Sergey
09.08.2018
20:31:52

Igor A.
09.08.2018
20:32:02

Google

Sergey
09.08.2018
20:32:11

Igor A.
09.08.2018
20:32:24

Sergey
09.08.2018
20:33:19
у меня есть контроллеры которые ничего про реквест или респонс не знают - все вынесено на уровень выше

Igor A.
09.08.2018
20:33:40

Andrew
09.08.2018
20:33:54

Shaun
09.08.2018
20:35:48

Sergey
09.08.2018
20:36:32
Graphql пока нет (оч медленно пытаюсь прикрутить) но разница как бы... Ее нет особо

Shaun
09.08.2018
20:39:55
Не ну просто был бы graphql тогда понятно что контроллерам не обязательно знать про реквест/респонс так как они то ничего особо не решали, а обычный рест тогда непонятно почему контроллер не знает что и в каком виде он отдаёт
не вижу преимуществ писать return $someDto; и обрабатывать это в лисенере вместо условно return $someDataMapper->toJson($dto);

Sergey
09.08.2018
20:47:41
а я не вижу разницы между "выплевывать json в контексте http api и выплевывать json в контексте graphql"))

Shaun
09.08.2018
20:59:47
Ну с graphql может быть удобно собирать ответ в лисенерах, я просто думал о такой штуке что бы генерить например класс Schema и что бы он имплементил интерфейсы там например PostsInterface, PostAuthorInterface ну и там методы нужные, к примеру postsOffset postsLimit postsSerializationStrategy, а в лисенерах уже смотреть на этот класс и его интерфейсы, и соответственно формировать респонс, но это наркомания

Sergey
09.08.2018
21:00:54
в том варианте который ты описал (в силу того что я плохо понял как это будет работать) - наркомания. А так процесс сборки респонса никак не отличается, graphql у тебя, json по http или что-то еще
короч, ладно. Я не готов сегодня что-то на эту тему вещать.

Igor A.
10.08.2018
06:09:56
Всем привет. Вчера говорили о возвращении из контроллера DTO и последующей обработки в листенере. Скажи, пожалуйста, как ты заставляешь симфони не ругаться на то, что контроллер не возвращает респонс?

Bohdan
10.08.2018
06:12:21

Igor A.
10.08.2018
06:13:01
Я понимаю, да. Только вот при попытке вернуть что-то отличное от респонса из контроллера будет ошибка The controller must return a response.

Bohdan
10.08.2018
06:13:46
ну а откуда идёт эта ошибка, по - твоему?

Google

Valentin
10.08.2018
06:14:10
Не, ты можешь вернуть что угодно, но в конечном результате должен привести в листерерах это к Response который ожидает симфони

Bohdan
10.08.2018
06:14:33
её наверняка отдаёт другой слушатель
если повесишь свой с приоритетом выше и сделаешь в нем Response - все будет ок

Igor A.
10.08.2018
06:14:33
Окей. Спасибо, будем попробовать.

Bohdan
10.08.2018
06:15:17
я думаю, что если и контролирует, то после листенеров
но не проверял

Igor A.
10.08.2018
06:30:37
Ох, надо было не на kernel.response а на kernel.view вешать лисенер, насколько я понимаю.

Sergey
10.08.2018
06:45:17

Igor A.
10.08.2018
06:46:09
Ага. Спасибо. Еще не до конца понял, могу ли как-то в конкретных трансформерах добиться тайпхинтинга. Как ты решаешь это проблему?

Sergey
10.08.2018
06:46:55
Плачу, и не решаю
Это нельзя без дженериков решить

Igor A.
10.08.2018
06:47:27
Досадно.

Бушаев Вячеслав
10.08.2018
09:56:44
Коллеги! никто не сталкивался с проблемой дебага в phpstorm?
шторм подхватывает сессию икс-дебага, но при любом шаге просто останавливает сессию.. в браузере пусто

Борис
10.08.2018
10:12:41
Может какой fatal. Смотри все логи. Сам пых может падать если баг в иксдебаг

Бушаев Вячеслав
10.08.2018
10:17:19
в конфигах и само окружение не менялось, логи пустые... Видимо система собирается помереть.. и необходима переустановка

Patrik
10.08.2018
10:37:58
Вопрос, клиенту нужно отдавать профиль юзера и только текущего, чужие профили клиенту не нужны. эндпоинт с доступом по токену в котором айди юзера в пейлоде, хочу сделать просто /profile и отдавать нужный профиль в зависимости от того кто шлет запрос, но это не по понятиям реста?
Не хочу делать колбасу из /user/{id}/profile и т.д.

Bohdan
10.08.2018
10:40:01

Petr
10.08.2018
10:40:40

Patrik
10.08.2018
10:40:46
Ну тут как минимум один и тот же урл отдает разные ресурсы

Sergey
10.08.2018
10:44:19

Google

Sergey
10.08.2018
10:44:48
потому что осознаешь что все эти HATEAS работают только для гипертекста

Patrik
10.08.2018
10:45:02
Это будет потом, а сейчас я как раз с rpc пытаюсь слезть))

Sergey
10.08.2018
10:45:58

Patrik
10.08.2018
10:47:08
Да, hateoas тоже не понял чем тут поможет, про кеш знаю, действительно не нужен, но прям коробит что один url уже не будет однозначно идентифицировать один ресурс

Sergey
10.08.2018
10:47:55
ну то есть как. можно сделать полное self discovery урлов но это не сильно помогает в условиях мобильных приложений и структуры данных те же тебе всеравно придется хардкодить, а это невилирует любой профит от всех этих загонов. А потому повторюсь - HATEOAS работает только и только в условиях гипертекста, когда данные и метаданные помогают клиенту интерпритировать контет (+ code on demand для ситуаций когда не может)
тогда у тебя полная инкапсуляция на сервере и все круто и красиво. И единственная хрень которая так работает - браузер
и то люди сча SPA почему-то пишут (потоу что web сломан))

Dmitry
10.08.2018
10:49:02
Есть ли какие-то бест-практис гайды по созданию REST API. Книжка Стирджеона норм? https://leanpub.com/build-apis-you-wont-hate

Patrik
10.08.2018
10:49:27
Норм, читал недавно

Admin
ERROR: S client not available

Sergey
10.08.2018
10:49:32
тебе должно быть удобно пользоваться этой апишкой
а для этого ты должен понимать как апишкой будут пользоваться) потому сейчас модны всякие graphql потому что они позволяют делигировать часть ответственности на клиент))

Patrik
10.08.2018
10:50:46
Ну вот и я из соображений удобства, клиенту нужен просто один профиль того кто авторизован, нет необходимости его вобще как-то идентифицировать

Petr
10.08.2018
10:51:01

Sergey
10.08.2018
10:53:18

Patrik
10.08.2018
10:55:09
Мм не уверен что понял, если меняется схема это уже вопрос версионирования, как это зависит от того под одним или разными урлами сидят однотипные ресурсы или нет?

Sergey
10.08.2018
10:55:47
но это надо вникать, разбираться... мой опыт подсказыавает что достаточно просто иметь:
- консистентную схему - то есть всегда одинаково хэндлить на уровне схемы списки, детали и т.д. что бы это было расширяемо и предсказуемо
- документацию - насколько легко следить за актуальностью доки и следить за обратной совместимостью
и есть куча способов этого добиться, но говорить что HATEOAS all the things это глупо

Google

Sergey
10.08.2018
10:56:31
и да, даже с HATEOAS это всеравно будет RPC)

Patrik
10.08.2018
10:56:46
Вот это кстати аргумент, чисто ради консистентонсти не делать эндпоинтов которые идентифицируют ресурсы по разному

Sergey
10.08.2018
10:56:49
полностью

Patrik
10.08.2018
10:57:34
Могу, на все реквесты и респонсы есть json-schema об которую апи сама себя валидирует

Sergey
10.08.2018
10:57:42
норм

Patrik
10.08.2018
10:57:52
И дока с той же схемы
Ладно, не буду городить, пусть будет чуть менее удобно но более предсказуемо, спасибо за ваше мнение

Dmitry
10.08.2018
11:01:55
А подскажите с решением такого кэйса: есть endpoint /documents, например, для роли employer он имеет усеченный набор параметров, для роли manager более полный. Как документировать такое в swagger?

Bohdan
10.08.2018
11:03:59
опциональные параметры?

Petr
10.08.2018
11:04:21
Хотя swagger ui, насколько я знаю, до сих пор не научился рендерить oneOf и anyOf

Patrik
10.08.2018
11:06:25
Та же фигня у api blueprint, схему умеет генерить с oneof а пример в доке пустой делает
Напоролся на это когда хотел показать секцию included у json-api
Но там хотя бы можно описать без one of, просто массив и какого типа в нем могут быть обьекты, тогда будет все ок в доке но наоборот пустая json-schema
Нашел еще такое решение, у инстаграмма, /users/self отдает всегда свой профиль по аксес токену
Не такая уж бредовая идея получается
Gmail - /users/me

Valentin
10.08.2018
11:50:46
Тоже юзаю /users/me но только для тестов, типа что бы получить текущего юзера по токену (/users/me?apiToken=...) потому что при каждом тесте у моего фикстурного юзера разный ид и это очень удобно, но на проде нет смысла юзать этот ендпоинт, всё равно фронт знает ид своего пользователя если он аутентифицирован

Dmitry
10.08.2018
11:50:50
кто в логсташ логирует?

Patrik
10.08.2018
11:55:49

Dmitry
10.08.2018
11:56:58
он локально (относительно кода) стоит и фигачит в удаленный эластик или рядом с эластиком его поставили и фигачите в него из кода по IP?