
Евгений
20.06.2018
16:33:04
Подскажите best practise, в апи надо сделать возможность получать запись и по айдишнику и по slug/alias, как лучше сделать? Один метод и внутри разруливать? Или разные методы?

Артур
20.06.2018
16:37:40
Я бы разные методы сделал. С целью изоляции логики
Непредсказуемый поиск мне кажется опасным
Это уже не получени записи тогда, а поиск записи по ID. Тогда да, тогда можно смешать.
Проще говоря, если
GET /api/row/12 | GET /api/row/vasya - будет несколько непредсказуемо.
Если
POST /api/row/find - будет понятно что ищешь по каким либо данным запись.

Google

F01134H
20.06.2018
16:42:35
честно говоря, это хреновая практика, прямиком в урл названия пихать
я бы в атрибут хттп вынес такое
типо ?search=blahblahblah
соответственно есть один метод, который при наличии ид - выдает конкретную запись, а если айди нет - пытается искать по тому, что есть в search

Артур
20.06.2018
16:44:04

F01134H
20.06.2018
16:44:13
ну slug

Артур
20.06.2018
16:45:00
Ааа. Ну его да. С id иная ситуация. Его в uri милое дело засунуть :)

Евгений
20.06.2018
16:45:23
то есть ?id=123&search=blahblahblah будет в первую очередь пытаться найти по айди и если не нашел то искать по слагу?

F01134H
20.06.2018
16:45:35
ага
ну типо ты указал конкретный ид

Евгений
20.06.2018
16:46:12
model/{id} а так?
то есть model/123?search=ewrwevcwrvb

Артур
20.06.2018
16:46:37
можно усовершенствовать следующим образом: GET /api/row/find?id=1&slug=anya

Google

Артур
20.06.2018
16:47:07

F01134H
20.06.2018
16:47:11

Maksim (Ellrion)
20.06.2018
16:47:23
Плохая идея

F01134H
20.06.2018
16:47:23

Евгений
20.06.2018
16:47:41

Артур
20.06.2018
16:47:48
ну то есть запись получить по id, Необязательный доп параметр поиск по slug
А если id не знаешь?

Artem
20.06.2018
16:51:07

Maksim (Ellrion)
20.06.2018
16:51:27
а какая хорошая?
Ну например разные роуты на взятие по id и поиск.
resources/{resource}
resources?search=...

Артур
20.06.2018
16:51:50

Евгений
20.06.2018
16:51:54
а поиск по слагу только?
мне только по слагу надо. может тогда и назвать не search?

Artem
20.06.2018
16:52:30

Maksim (Ellrion)
20.06.2018
16:53:00

Евгений
20.06.2018
16:53:22
ок, попробую. у меня с апи опыта оч мало. а документировать чем? свагер?

Артур
20.06.2018
16:53:36
SELECT count(*) as kolvo, avg(rating) FROM golosa

Artem
20.06.2018
16:53:56

Maksim (Ellrion)
20.06.2018
16:54:22
Тебе нужны selectRaw pluck и постобработка небольшой полученной коллекции

Артур
20.06.2018
16:54:52

Artem
20.06.2018
16:55:09

Google

Артур
20.06.2018
16:55:34
Первое что нашел

Евгений
20.06.2018
16:56:15
а как делать версию апи? например делаю группу роутов v1, там все методы описываю. Потом делаю группу роутов v2, и например если метод отсутствует то искать в v1?
чтоб описывать только изменившиеся методы

Maksim (Ellrion)
20.06.2018
16:59:04

Артур
20.06.2018
16:59:06

Artem
20.06.2018
16:59:39

Евгений
20.06.2018
16:59:41
да, далековато) пока сделаю базовые методы

Maksim (Ellrion)
20.06.2018
17:00:09
Я с телефона так что код тяжело писать)

Артур
20.06.2018
17:01:55
Кто инглиш сносно знает?
https://github.com/DarkaOnLine/L5-Swagger
Это не автодокументатор?

Антон
20.06.2018
17:02:05

Артур
20.06.2018
17:02:49
Раз вопрос поднялся на тему Lara api+swagger - поискал в инете. Вроде похоже на автодок

Евгений
20.06.2018
17:02:55
да, автодок на сколько я понял

Антон
20.06.2018
17:03:15
Это обёртка над swagger-php

F01134H
20.06.2018
17:03:37
честно говоря, сваггер такое говно
и доку писать под него в коде - отдельное удовольствие
просто описание метода в 10 раз больше самого метода

Google

F01134H
20.06.2018
17:04:14
это не норма

Антон
20.06.2018
17:04:33
Там вроде uml или аннотации?

F01134H
20.06.2018
17:04:41
аннотации

Антон
20.06.2018
17:04:52

f4rt~
20.06.2018
17:04:57
можно yml чо уж

Артур
20.06.2018
17:05:02
о нём много статей с примерами
Скажем так: у меня api строго типизированный начиная от принимаемых данных, заканчивая ответом. Все это я пакую в json сваггера и генерю на стороне. Это может автоматизировать процесс публикации доки на 100%?

F01134H
20.06.2018
17:05:11

Антон
20.06.2018
17:05:25
И вообще метод это не только строчка вызова в контроллере. За ним может таиться и 500 строк )
Внутри каких нибудь моделей или сервисов

F01134H
20.06.2018
17:05:42
это понятное дело
но все равно
сваггер чересчур тяжеловесный

Maksim (Ellrion)
20.06.2018
17:06:06
Уж лучше свагер схемму а не аннотации в коде

Антон
20.06.2018
17:07:07
У нас было так, к каждому контроллеру интерфейс и там уже эти долбанные аннотации. Мне не понравилось.

F01134H
20.06.2018
17:08:56
мне кажется можно генерить документацию чисто по описанию + ответу метода
да даж не кажется, а факт)
остается запилить только
работать конечно будет только в ларке

Maksim (Ellrion)
20.06.2018
17:09:28

Артур
20.06.2018
17:09:38

Google

Антон
20.06.2018
17:09:50
Да там такая огромная аннотация постоянно
Дело не в интерфейсе
Но другого даже не использовал

Артур
20.06.2018
17:10:50
есть решение, но не публиковал
Гемррой в том что там строгая типизация и это создает бюрократию. А я замучюсь объяснять почему нужны коллекции для исходящих данных и почему нужно описывать каждую ошибку. А также ошжидаемые данные

Антон
20.06.2018
17:11:27
А чего, больше вообще инструментов нет?

Maksim (Ellrion)
20.06.2018
17:11:49
Дело не в интерфейсе
Ну благодаря ему ты отделяешь аннотации от нужного кода с его докблоком и при этом сохраняешь тему с частью информации в сингнатуре метода

F01134H
20.06.2018
17:12:06

Антон
20.06.2018
17:12:12

Артур
20.06.2018
17:12:15
Вот базис API и это блин все критично
Зато и автотесты можно гонять
Но заполнить все реквест правила, все ошибки, все форматы данных нао обязательно

Антон
20.06.2018
17:12:56
Да и вообще как бы логично получается через интерфейс.

Артур
20.06.2018
17:13:56
Там автогенерация тестов ?

Maksim (Ellrion)
20.06.2018
17:13:57

Антон
20.06.2018
17:14:06
Был на проекте где задачу без тестов возвращают и ниибет

Артур
20.06.2018
17:14:08
Может блин оформить и опубликовать...

Антон
20.06.2018
17:15:49
У меня вообще зенд 2 щас (