Сергей
jsonld, jsonapi - там да, все есть
Гена
Мы говорим про базовый функционал апи платформы? Или как вы апи платформу юзаете?
Сергей
https://api-platform.com/docs/core/content-negotiation/ речь идет об использовании raw JSON Вот использует ли кто то ?
Гена
ну у нас везде application/json Но мне кажется ты еще о чем-то
Сергей
ну например, есть ресурс, есть get collection в jsonld есть поле totalItems благодаря этогому можно быстро нарисовать пагинатор и тд. в формате RAW json конечно такого нет вот как это в решается у вас? доп метод count? или может normalizer свой ?
Гена
ну например, есть ресурс, есть get collection в jsonld есть поле totalItems благодаря этогому можно быстро нарисовать пагинатор и тд. в формате RAW json конечно такого нет вот как это в решается у вас? доп метод count? или может normalizer свой ?
Ну я вижу что у наших Get запросов юзается доп параметр page пагинация от апи платформы. не важно какой формат. В yaml collection: pagination: items_per_page: 10 в самой коллекции все стандартно. Ну то есть пока не ничего дополнительно не нужно было
Гена
ну и дока тоже от апи сама на эту тему
Гена
Или ты не про это спрашиваешь?
Сергей
ну и дока тоже от апи сама на эту тему
а ниже что там? какой content -type?
Гена
Сергей
а, ну вот..
Гена
а что должно быть? мы в api/config/packages/api_platform.yaml отключили все не нужное
Сергей
а как фронт рисует пагинацию, если неизвестно сколько всего в коллекции элементов будет?
Сергей
@context: "/api/contexts/Order", @id: "/api/orders", @type: "hydra:Collection",…} @context: "/api/contexts/Order" @id: "/api/orders" @type: "hydra:Collection" hydra:member: [{@id: "/api/orders/1", @type: "Order", id: 1, discount: "350.00", preCost: null,…},…] hydra:totalItems: 18 ну вот например
Сергей
hydra:totalItems: 18
Сергей
т.е. у вас это не используется
Сергей
Сергей
allow_plain_identifiers тоже включали?
Гена
а как фронт рисует пагинацию, если неизвестно сколько всего в коллекции элементов будет?
хороший вопрос. Фронтеры что-то ниразу к нам не обращались на эту тему. А может и правда проблема есть :))) Завтра узнаю
Сергей
Смешанные чувства.. вроде ApiPlatform неплох, но бывают моменты, когда простые вещи делаются довольно странно из за спецификаций.. например, /me -> вывести инфу и текущем пользователе ( чтоб понять какие роли, отрисовать что то на фронте и тд) по логике - должно быть в itemOperations, но нет) потому что нужен id для него.. поэтому писать надо в collectionOperations , который по идее вернуть должен массив, а на деле будет объект. для свагера наверное можно тоже подкостылять)
Сергей
потому что требуется идентификатор
Сергей
т.е. ID обязателен при itemOperation
Гена
потому что требуется идентификатор
Ты прав. Ради интереса перенес запрос ошибка
Сергей
Jwt, cookies?:)
Сергей
Я через неделю понял что сил и времени трачу больше пока чем если бы без него все делал
Вот мне кажется также будет.. хотя домашний проектик быстро взлетел
Maxim Kainov
я вроде четко написал - RAW json = application/json )
А почему именно raw json, а не hydra
Maxim Kainov
Разве нельзя у апиплатформы свой контроллер слелать и там модифицировать ответ?
Юра
Пишется свагер декоратор который убирает все гет параметры
Юра
https://pastebin.com/abzEtRgQ
Юра
И будет счастие
Сергей
И будет счастие
а у вас что? какой формат для апи - стандартный набор ? или тоже на RAW json ?
Сергей
И будет счастие
нету щастья) Invalid identifier value or configuration.
Сергей
ну и плюс еще дунглас про это писал на гитхабе
Юра
Не знаю у нас работает
Сергей
ну вот https://pastebin.com/6V5QXUmx
Сергей
ну и в action для теста public function __invoke() { return $this->repository->findAll()[0]; }
Сергей
я так подозреваю, что от в invoke должнен принять User, но не может) т.к. ID не передали
Юра
Ну да айди нет
Юра
Юзера я так понимаю из сессии
Юра
сутя по урлу /me
Юра
"defaults"={"_api_receive"=false}
Юра
еще вот это надо написать
Сергей
аа..
Юра
на всякий случай удалить кеш руками
Юра
я замечал что какого-то фига на деве если меняешь аннотации они кешируются
Сергей
ща попробую ,пасиб
Сергей
ну как вообще тебе api platform? давно работаешь?
Сергей
"read"=false, так сработало
Юра
Не знаю. С одной стороны он многое убыстряет. Прототип накидать можно быстро. С другой стороны бывали моменты когда я хотел сделать rm -rf
Юра
Группы сериализации тот еще гемор продумать
Сергей
DTO? тоже плодить их с трансформерами..
Юра
У нас было что все упало на проде
Сергей
так это ... у вас jsonld?
Юра
Оказалось куча лишних данных тянуло
Юра
Гидра
Юра
Что там по дефолту
Сергей
угу.. и апиха тока для фронта или кто то сторонний пользуется? ну типа в общий доступ какой то дается
Юра
не там фронт и всё
Сергей
короч нужно АПИ для фронта и на сторону, чтобы люди могли работать. вот у меня есть подозрения что мало кто знает про hydra)
Юра
так есть дока
Юра
свагера
Сергей
это да.. но есть сомнения)) "че за iri, дай мне ID" )
Сергей
а со своей поделкой можно как угодно сделать. Благо щас все удобно и быстро можно сделать на симфе, не то что во времена 2.х)
Сергей
по времени по ходу одинаково будет)
Maxim Kainov
Группы сериализации тот еще гемор продумать
А что там продумывать, какие поля сериализовать? Так это в любом случае надо продумывать.
Maxim Kainov
Юра
На сторону ты можешь в теории сгенерить код клиента и отдать в виде либы
Anonymous
как понять, какие аргументы приходят в __конструкт класса? класс автовайрится и аргументы "должны" передаваться, но по факту какие-то два отваливаются и ломается совершенно все
Anonymous
даже не так. что делать, если в сервисах эти аргументы есть, из энва они резолвятся, но в класс не приходят ( в классе NULL в значениях этих параметров)? куда копать?
Eugen Su
Аргументы скаляры чтоле? Ты явно в сервис ямл их инжект прописал? Мало инфы)
Anonymous
Аргументы прописаны в default: _bind:, резолвятся из энва
Anonymous
Аргументы строки
Daria
Аргументы прописаны в default: _bind:, резолвятся из энва
Попробуй так в services.yaml (SF4): parameters: parameterName: '%env(PARAM)%' services: App\Module\Service: arguments: $parameterName: '%parameterName%'
Anonymous
Принято
Daria
Принято
просто я тоже с этим долго бодалась и заработало только так как в примере)
Anonymous
Все остальные аргументы работают просто через бинд((((
Daria
Все остальные аргументы работают просто через бинд((((
так в бинд ты можешь закинуть потом, просто сначала в parameters закинь переменные из энва