
Aleh
14.06.2018
09:46:37
Еще любимое про rest
https://mobile.twitter.com/fielding/status/324448353180061696

Sergey
14.06.2018
09:46:43
ну то есть я могу понять если "фасадом" там называют то что возвращает Database:: штука (или че там есть хз не юзал), и это именно фасад наз базой. Но люди сам доступ фасадом называют
потому что глупенькие
"мы будем делать rest на mvc архитектуре что бы придти к микросервисам"

Google

Sergey
14.06.2018
09:47:34
какой-нибудь такой булшит
Event sourcing на eloquent

Bohdan
14.06.2018
09:49:04

Sergey
14.06.2018
09:49:36

Миша
14.06.2018
10:25:42
тут все считают что рест гавно?

Bohdan
14.06.2018
10:27:58
а что такое рест?

Миша
14.06.2018
10:28:32
тема для срача

Aleh
14.06.2018
10:28:36
(мои мечты)

Миша
14.06.2018
10:29:15
graphql нас спасет?

Aleh
14.06.2018
10:29:34
ну graphql норм, но можно и просто json api делать

Артур Евгеньевич
14.06.2018
10:29:46

Google

Артур Евгеньевич
14.06.2018
10:29:54
хотя HTTP и сам не идеален
http://jsonapi.org/

Sergey
14.06.2018
10:30:29

Миша
14.06.2018
10:30:39

Aleh
14.06.2018
10:30:46

Sergey
14.06.2018
10:30:48

Aleh
14.06.2018
10:31:11
первый шаг - признать, что у тебя rpc

Sergey
14.06.2018
10:31:11
ну то есть....

Артур Евгеньевич
14.06.2018
10:31:23
а протокол уже дело 10

Aleh
14.06.2018
10:31:57

Миша
14.06.2018
10:32:02
Все таки было бы не плохо следовать какой то проверенной методике формирование запросов/ответов. Что можете тогда порекомендовать?

Sergey
14.06.2018
10:32:09
да, именно так. А если еще непонимаешь почему REST API не существует - единственный реальный пример REST - это web. То есть вся совокупность, http, html и т.д. Гипертекст и code on demand. То есть у тебя есть браузер который ничегошеньки не знает о том что куда ты хочешь и что там есть.

Сергей
14.06.2018
10:32:16

Sergey
14.06.2018
10:32:40
http
это транспорт для твоего приложения, все остальное ты наворачиваешь выше сам

Сергей
14.06.2018
10:33:01

Sergey
14.06.2018
10:33:08
короч если ты хоть какие-то знания о сервере хардкодишь на клиенте - будь то урлы, структуры данных и т.д. - то это уже не REST. И не надо.

Миша
14.06.2018
10:33:15
я видел много крайне паршивых json api

Sergey
14.06.2018
10:33:34

Google

Евгений
14.06.2018
10:33:50
Транспорт? Транспорт это жи TCP, с использованием хттп тебе уже надо будет соблюдать правила запроса ответа и разгулятся тебе не дадут...

Миша
14.06.2018
10:33:52

Sergey
14.06.2018
10:34:05

Артур Евгеньевич
14.06.2018
10:34:32

Sergey
14.06.2018
10:34:43
а так http хорошо подходит для RPC)

Aleh
14.06.2018
10:35:06
в общем что есть транспорт зависит от того, с какого угла вы смотрите)

Артур Евгеньевич
14.06.2018
10:38:03

Sergey
14.06.2018
10:41:18
то есть такие штуки как http cache framework - ты его юзаешь в контексте API? Или ты кэш обычно все же на уровне приложения реализуешь?

Aleh
14.06.2018
10:43:00

Артур Евгеньевич
14.06.2018
10:43:24
ну можно транспорт разделить допустим на два уровня)
первый будет http - а второй это то протокол котоырй мы приняли в приложении - будет трансопртом для нашей логики
тут больше вопрсо в именовании и сопоставлении с OSI

Sergey
14.06.2018
10:45:01
и нас не особо интересует OSI в этом контексте)

F01134H
14.06.2018
12:11:17
А как сделать версионирование в json rpc?
или этот вопрос вообще не должен возникать

Вадим
14.06.2018
12:24:21
Нид хелп ... захотел купить бумажное издание Фаулера, но есть "Шаблоны корпоративных приложений" и "Архитектура корпоративных программных приложений" ... судя по оглавлению одно и тоже и количество страниц тоже одинаковое. Но ISBN разный. Что лучше?

Google

Aleh
14.06.2018
12:25:51

F01134H
14.06.2018
12:26:33
в смысле?
и куда эти v1 v2 девать?

(;¬_¬)
14.06.2018
12:27:02
blabla/api/v1/blblbla

F01134H
14.06.2018
12:27:05
у меня ж вроде как единый эндпоинт, через который я коллбэки вызываю
мы точно про json rpc говорим?)

Tex
14.06.2018
12:27:56

(;¬_¬)
14.06.2018
12:27:57
ну а в чем проблема hostname/api/v1/endpoint ?

Admin
ERROR: S client not available

F01134H
14.06.2018
12:28:20
окей
а какие то best practices есть?
я бы на твоем месте не использовал комментирование в телеграме, если нечего по существу ответить ?

(;¬_¬)
14.06.2018
12:33:00

F01134H
14.06.2018
12:33:11
тоже об этом подумал
а на уровне класса как грамотно версионировать методы?)
в таком случае
через неймспейсы делать два разных класса?

Артур Евгеньевич
14.06.2018
12:34:32
и в зависимости от роута заруливаешься на нужный инстанст

Google

Дмитрий
14.06.2018
12:38:59
Удобнее когда версия указывается в схеме
Так как она всё равно меняется от версии к версии

Sergey
14.06.2018
12:40:17
у тебя поменялся один роут - тебе всю API пробрасывать с новым префиксом?
это годный вариант когда вся API меняется. Например у тебя есть API ты понял что все сделано через жопу и надо все прям переделывать

Sergey
14.06.2018
13:00:19
лучше через хедеры)

Nik
14.06.2018
13:14:09
господа, куда бы вы запихнули некую сучность конвертации входящих данных аля старые-новые названия переменных в Request ?

Sergey
14.06.2018
13:14:33
мидлвары, пайплайны, адаптеры

Nik
14.06.2018
13:15:24
есть старое апи, в котором многие вещи названы от балды, но его выпиливать не собираются, так как клиенты и мобильные приложения. сейчас пишем новую версию апихи, но структура бд и поля остаются старыми, по-этому есть диллемка - в каком месте все это дело преобразовывать

Sergey
14.06.2018
13:16:08
мидлвары, пайплайны, адаптеры
делему нашел
тебе нужен какой-то способ задать мэппинг - а это уже надо исходя из ситуации смотреть как проще/лучше

Nik
14.06.2018
13:17:16
мидлваря не совсем подходит т.к. если преобразуем поля, валидация уже будет ругаться на новые нейминги, а за адаптеры подумаю, спасибо, наверное оптимальный вариант

Sergey
14.06.2018
13:21:21
так что я не понимаю как тебе мидлвары не подходят а адаптеры уже подходят)

Nik
14.06.2018
13:21:53
так то да, но я про отдельный сервис, который в самом контроллере уже преобразует данные в нужный формат

Sergey
14.06.2018
13:22:02
но как хочешь
я бы конвертил из старого в новый и уже новый валидировал бы

Nik
14.06.2018
13:22:37
не могу, потому что ошибки валидации будут сыпаться не на price, а на globalUnitPrice переменную