@laravel_pro

Страница 1501 из 2014
Евгений
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
типо ?search=blahblahblah
названия чего?

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
то есть model/123?search=ewrwevcwrvb
Как ты это документировать будешь?

F01134H
20.06.2018
16:47:11
то есть model/123?search=ewrwevcwrvb
ну я именно это и подразумевал)

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: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
SELECT count(*) as kolvo, avg(rating) FROM golosa
А как-то средставми Eloquent можно ?

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

Артур
20.06.2018
16:54:52
ок, попробую. у меня с апи опыта оч мало. а документировать чем? свагер?
https://ru.wikipedia.org/wiki/REST Глянь здесь Пдробно написаны приципы API. (Может и читал, я фиг знает ? ) В ларе они реализуемы

Artem
20.06.2018
16:55:09
Тебе нужны selectRaw pluck и постобработка небольшой полученной коллекции
а как-то чуть подробнее можно? То я пока не совсем представляю

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

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

чтоб описывать только изменившиеся методы

Maksim (Ellrion)
20.06.2018
16:59:04
а как-то чуть подробнее можно? То я пока не совсем представляю
Rewiev::selectRaw('count(score) as cnt, score')->groupBy('score')->pluck('cnt', 'score')

Артур
20.06.2018
16:59:06
а как делать версию апи? например делаю группу роутов v1, там все методы описываю. Потом делаю группу роутов v2, и например если метод отсутствует то искать в v1?
Чето как-то ты глубоко зашел. Тогда на каждый узел у тебя должен быть url. Я такой доки не знаю. Если кто занет скинье. Буду юзать

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

Maksim (Ellrion)
20.06.2018
17:00:09
а AVG, как сюда еще добавить ?
Это уже у полученной коллекции бери

Я с телефона так что код тяжело писать)

Артур
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
это не норма
Так у всех у них так в 10 раз больше метода

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

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

F01134H
20.06.2018
17:05:11
Так у всех у них так в 10 раз больше метода
хочу под ларку конкретно написать автогенератор доки

Антон
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
Дело не в интерфейсе
Ну благодаря ему ты отделяешь аннотации от нужного кода с его докблоком и при этом сохраняешь тему с частью информации в сингнатуре метода

Артур
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 щас (

Страница 1501 из 2014