|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Всем привет, у меня есть ASP Core 3.0 контроллер с методом который принимает сложный фильтр в качестве параметра. Код: c# 1. 2. 3. 4. 5. 6. 7.
В качестве параметров для данного метода мне нужно переда 2 DateTime и 2 целочисленных массива. Поэтому пришлось перейти на [FromQuery] и соответственно создать обертку Код: c# 1. 2. 3. 4. 5. 6. 7.
Из Vue-js приложения с помощью axios делаю get-запрос Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
В метод контроллера приходит getMarksAsyncParamsModel, у которой есть значения только у startDate и finalDate, массивы пустые. Пробовал вместо массивов использовать Ienumerable<int>, тогда приходит null. Строка запроса получается следующая: http://localhost:5000/EntryMark/GetMarks?startDate=2019-10-01T21:00:00.000Z&finalDate=2019-10-02T21:00:00.000Z&companiesfilter []=1&personfilter[]=12940&personfilter[]=7725&personfilter[]=705&personfilter[]=3974 Знаю, что можно сделать POST-запрос и тогда все заработает, но все же хотелось чтобы использовался именно GET, чтобы не противоречить семантике методов HTTP. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:30 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
По идее, никаких квадратных скобок в запросе быть не должно, то есть так Код: c# 1.
тогда FromQuery должен отработать нормально ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:36 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Shocker.Pro, действительно параметр терялся из за [], осталось только понять почему axios пририсовывает квадратные скобки к array-параметрам. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 13:49 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Как вариант, если совсем сложные запросы, то можно делать в два прохода: передаем запрос на сервер через POST, сохраняем его где-нибудь на сервере (в БД, напр.) с ключом, возвращаем ключ клиенту, затем клиент делает уже GET запрос с этим ключом в качестве параметра. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 14:10 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthat, так можно и в один проход сразу из POST-запроса вернуть всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 14:34 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Получилось решить проблему следующим образом: импортирую npm qs Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2019, 15:53 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
vb_subfkthat, так можно и в один проход сразу из POST-запроса вернуть всё. Это некошерно. Возврат результатов поиска должен быть через GET. Это такой бест практис - запрос чего-то не изменяющий состояние сервера должен быть GET, а изменения на сервере это POST/PUT/DELETE. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2019, 00:18 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatvb_subfkthat, так можно и в один проход сразу из POST-запроса вернуть всё. Это некошерно. Возврат результатов поиска должен быть через GET. Это такой бест практис - запрос чего-то не изменяющий состояние сервера должен быть GET, а изменения на сервере это POST/PUT/DELETE. Что за ерунда? Ты мешаешь бизнес-логику (поиск) с транспортной (GET/POST). Сложные объекты передаются через POST - что тут некошерного? " то можно делать в два прохода:" - когда коту делать нечего... fkthatзапрос чего-то не изменяющий состояние сервера должен быть GET, Протоколы посерьезней пацанов со скуля кладут на это. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 13:08 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatЭто некошерно. Возврат результатов поиска должен быть через GET. Это такой бест практис - запрос чего-то не изменяющий состояние сервера должен быть GET, а изменения на сервере это POST/PUT/DELETE. То, что GET должен быть идемпотентным -- да, однозначно POST может использоваться как GET в случаях, когда запрос представляет собой сложный объект, и чисто технически GET использовать невозможно. Кошерность тут не при чём, дас ист реальность ) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 14:29 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
.. на другом форуме мне сказали, что POST для получения данных (не для создания сущности на сервере) мешает использовать кнопку "назад" в браузере (ну, то есть, не сохраняется история браузера) ... это просто комментарий, не в качестве аргумента за или против ... сам я POST-ирую из SPA на Vue.js по всем случаям ... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 14:51 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
carrotik.. на другом форуме мне сказали, что POST для получения данных (не для создания сущности на сервере) мешает использовать кнопку "назад" в браузере я имел в виду про API. с точки зрения браузера всё несколько иначе, да и семантика другая. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 14:52 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
carrotik.. на другом форуме мне сказали, что POST для получения данных (не для создания сущности на сервере) мешает использовать кнопку "назад" в браузере (ну, то есть, не сохраняется история браузера) ... это просто комментарий, не в качестве аргумента за или против ... сам я POST-ирую из SPA на Vue.js по всем случаям ...в данном случае ни GET ни POST не повлияют на историю браузера - тут же нет перехода на другую страницу. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 14:55 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttТо, что GET должен быть идемпотентным -- да, однозначно POST может использоваться как GET в случаях, когда запрос представляет собой сложный объект, и чисто технически GET использовать невозможно. Кошерность тут не при чём, дас ист реальность ) Не, ну, конечно, в иной ситуации не то что некошерное съешь, но и свинины ломоть заточишь. Но, делая поиск через пост мы, например, теряем возможность "вперед-назад", или возможность сохранить результаты поиска в закладках и т.п. Ну и плюс POST с отображением его результата это сам по себе трефной подход, т.к. кошером считается паттерн "Post/Redirect/Get" ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 16:43 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatНе, ну, конечно, в иной ситуации не то что некошерное съешь, но и свинины ломоть заточишь. Но, делая поиск через пост мы, например, теряем возможность "вперед-назад", или возможность сохранить результаты поиска в закладках и т.п. Ну и плюс POST с отображением его результата это сам по себе трефной подход, т.к. кошером считается паттерн "Post/Redirect/Get" вперёд-назад не теряем, если это SPA :) но вот прям упарываться и пытаться сделать GET не нужно, как этого хочет ТС P/R/G конечно известный паттерн, но он немного про другое, его задача решать проблему повторной отправки формы, в том числе по F5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 16:45 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Агнец за бортомЧто за ерунда? Ты мешаешь бизнес-логику (поиск) с транспортной (GET/POST). Нихера не понял. Не изволите ли изъясниться яснее? Агнец за бортом" то можно делать в два прохода:" - когда коту делать нечего... Post/Redirect/Get. Ссылку уже давал. Тоже придумали когда делать нечего? Агнец за бортомПротоколы посерьезней пацанов со скуля кладут на это. Это SOAP, что ли? "Творение Комитета" , которое все уже забыли аки ночной кошмар ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 17:06 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttвперёд-назад не теряем, если это SPA :) Ну, где SPA, там и REST, а с т.з. REST поиск через POST это уже вообще по ту сторону зла :) hVosttP/R/G конечно известный паттерн, но он немного про другое, его задача решать проблему повторной отправки формы, в том числе по F5 При поиске с этим тоже будет проблема. По Ф5 страшного ничего не случится, но будет анноящее предупреждение о повторной отправке. "Убивать тебя не станут, но тоже ничего хорошего" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 17:22 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthathVosttвперёд-назад не теряем, если это SPA :) Ну, где SPA, там и REST, а с т.з. REST поиск через POST это уже вообще по ту сторону зла :) нет там никакого зла. в пост можно отправить нормальный объект запроса, с фильтрами, группировками, сортировками и другими параметрами. чистота GET это про уникальный адрес ресурса и обращение к ресурсу. параметры запроса в query string уже пинают этой концепции по яйцам. так что пофигу что у вас там будет для получения данных: GET или POST. абсолютно монопенисуально :) fkthatПри поиске с этим тоже будет проблема. По Ф5 страшного ничего не случится, но будет анноящее предупреждение о повторной отправке. "Убивать тебя не станут, но тоже ничего хорошего" (с) веб не идеален ) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 18:09 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttчистота GET это про уникальный адрес ресурса и обращение к ресурсу. параметры запроса в query string уже пинают этой концепции по яйцам. Почему же. Очень даже по REST. Есть ресурс (path часть URL, то что до "?"). У ресурса может быть множество разных представлений. А query string - это как раз опции представления этого одного и того же ресурса. Разжую пример с поиском. Запрос на поиск мы трактуем как ресурс. Есть коллекция этих ресурсов с URL, допустим, "/api/search", отдельный ресурс запроса поиска будет иметь URL "/api/search/{id}". Ресурс поиска имеет два представления (representation) - параметры поиска, например в JSON и список с результатами поиска. Теперь клиент отправляет POST на /api/search передавая параметры поиска (первое представление), а POST по URL коллекции это как раз создание ресурса. Сервер сохраняет этот ресурс (запрос) в каком-нибудь storage, клиенту возвращается ID созданного ресурса. Допустим "4269". Теперь клиент делает запрос GET по URL этого ресурса /api/search/4269 и в ответ получает второе представление этого ресурса (список с результатами поиска). Все как раз предельно по REST. hVosttвеб не идеален ) Да мир вообще не идеален. Порой по необходимости такого наговнокодишь, что в страшном сне не привидится. Но в данном случае речь ведь не идет о выборе "сделать трефно, но зато за один день или делать кошерно, но целый год". Я сам такую шляпу однажды делал, и если уже есть вся логика самого поиска, то дел тут от силы на пару-тройку человекочасов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2019, 19:01 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatvb_subfkthat, так можно и в один проход сразу из POST-запроса вернуть всё. Это некошерно. Возврат результатов поиска должен быть через GET. Это такой бест практис - запрос чего-то не изменяющий состояние сервера должен быть GET, а изменения на сервере это POST/PUT/DELETE. GraphQL ещё не видели? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 04:50 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Дмитрий МухGraphQL ещё не видели? :) Не. Еще не интересовался. Это что-то типа RIPнутого OData? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 08:08 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Дмитрий Мух, Взглянул мельком - показалось, что какая-то шляпа. Чо уж тогда до конца не идти, и не разрешить передачу sql запроса прямо в http. Кстати, в MS SQL такая тема была еще лет 10 назад, потом потом, видать таки поняли, что за херь на самом деле придумали, и фичу эту нах выпилили. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 08:27 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatПочему же. Очень даже по REST. Есть ресурс (path часть URL, то что до "?"). У ресурса может быть множество разных представлений. А query string - это как раз опции представления этого одного и того же ресурса. У query string есть ряд ограничений. На длину строки в первую очередь, во вторую на передачу структуры, а не плоский набор параметров -- придётся извращаться. В третью, ограниченный набор символов, придётся эскейпить, что сильно влияет на длину строки. В итоге, я не понимаю, чего ради еб****ь, чтобы влезть в ограничения, если можно использовать POST и передавать нормальные структуры данных с поддержкой UTF-8. fkthatРазжую пример с поиском. Запрос на поиск мы трактуем как ресурс. Есть коллекция этих ресурсов с URL, допустим, "/api/search", отдельный ресурс запроса поиска будет иметь URL "/api/search/{id}". Ресурс поиска имеет два представления (representation) - параметры поиска, например в JSON и список с результатами поиска. Теперь клиент отправляет POST на /api/search передавая параметры поиска (первое представление), а POST по URL коллекции это как раз создание ресурса. Сервер сохраняет этот ресурс (запрос) в каком-нибудь storage, клиенту возвращается ID созданного ресурса. Допустим "4269". Теперь клиент делает запрос GET по URL этого ресурса /api/search/4269 и в ответ получает второе представление этого ресурса (список с результатами поиска). Все как раз предельно по REST. REST не накладывает ограничения на использование POST для read-only получения данных. Видимо вы никогда не имели никаких дел со сложной клиентской фильтрацией, поэтому у вас рассуждения ограничиваются исключительно придуманной себе REST-религией и собственным опытом. Как заметил Дмитрий выше, хороший пример GraphQL, в котором запрос к данным это сложный объект, который передаётся в JSON. fkthatДа мир вообще не идеален. Порой по необходимости такого наговнокодишь, что в страшном сне не привидится. Но в данном случае речь ведь не идет о выборе "сделать трефно, но зато за один день или делать кошерно, но целый год". Я сам такую шляпу однажды делал, и если уже есть вся логика самого поиска, то дел тут от силы на пару-тройку человекочасов. Никаких минусов в использовании POST для запроса данных нет. Кроме упорото религиозных конечно. И никто не говорил, что семантика это плохо. Нет, но нужно смотреть на мир не через розовые очки, и понимать, что нужно решать задачи, а не обтёсывать кирпичики до идеально ровных граней. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 17:28 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatДмитрий МухGraphQL ещё не видели? :) Не. Еще не интересовался. Это что-то типа RIPнутого OData?нет ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 17:45 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatВзглянул мельком - показалось, что какая-то шляпа. Чо уж тогда до конца не идти, и не разрешить передачу sql запроса прямо в http. Кстати, в MS SQL такая тема была еще лет 10 назад, потом потом, видать таки поняли, что за херь на самом деле придумали, и фичу эту нах выпилили. Ну и зачем выдумывать всякую ересь? Ничего никто не выпиливал, откуда такие больные фантазии берутся-то? https://www.nuget.org/packages/Microsoft.AspNetCore.OData ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 17:47 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatВзглянул мельком - показалось, что какая-то шляпа.однако популярная шляпа, набирающая оброты советую подробнее ознакомиться, чем попусту спорить на форуме ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 17:48 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatPOST по URL коллекции это как раз создание ресурса И ещё, у нас в одном решении, в час бывает больше ста тысяч запросов с поиском и фильтрацией, клиентов со всей страны. За такое решение, как вы предложили, разработчиков бы избили. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 17:51 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttЗа такое решение, как вы предложили, разработчиков бы избили. Да ладно тебе. Вполне рабочее решение, когда данные предварительно подготавливаются, кладутся например в Redis, или Couchbase, и отдаются по некому идентификатору, ключу, токену. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 18:09 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Дмитрий МухhVosttЗа такое решение, как вы предложили, разработчиков бы избили. Да ладно тебе. Вполне рабочее решение, когда данные предварительно подготавливаются, кладутся например в Redis, или Couchbase, и отдаются по некому идентификатору, ключу, токену. Ну так это совершенно другая задача, например, запрос отчёта. Данные либо долго готовятся, либо многократно затем используются. Для кеширования не обязательно сохранять запрос под ID, можно сам запрос кешировать, как делают СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 18:16 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttДмитрий Мухпропущено... Да ладно тебе. Вполне рабочее решение, когда данные предварительно подготавливаются, кладутся например в Redis, или Couchbase, и отдаются по некому идентификатору, ключу, токену. Ну так это совершенно другая задача, например, запрос отчёта. Данные либо долго готовятся, либо многократно затем используются. Для кеширования не обязательно сохранять запрос под ID, можно сам запрос кешировать, как делают СУБД. Ну почему же только отчёта. Вполне себе решение для REST API, где клиенту нужен набор данных, соответсвующих указанному фильтру, чтобы потом как-то крутить эти данные у себя какое-то время. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 18:24 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttfkthatВзглянул мельком - показалось, что какая-то шляпа. Чо уж тогда до конца не идти, и не разрешить передачу sql запроса прямо в http. Кстати, в MS SQL такая тема была еще лет 10 назад, потом потом, видать таки поняли, что за херь на самом деле придумали, и фичу эту нах выпилили. Ну и зачем выдумывать всякую ересь? Ничего никто не выпиливал, откуда такие больные фантазии берутся-то? https://www.nuget.org/packages/Microsoft.AspNetCore.OData Я вообще не про это, а про поддержку HTTP прямо в SQL Server. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 18:57 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthathVosttпропущено... Ну и зачем выдумывать всякую ересь? Ничего никто не выпиливал, откуда такие больные фантазии берутся-то? https://www.nuget.org/packages/Microsoft.AspNetCore.OData Я вообще не про это, а про поддержку HTTP прямо в SQL Server. Так то был SOAP протокол. А GraphQL - это далеко не SOAP. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 19:02 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Дмитрий МухНу почему же только отчёта. Вполне себе решение для REST API, где клиенту нужен набор данных, соответсвующих указанному фильтру, чтобы потом как-то крутить эти данные у себя какое-то время. Я так и сказал, многократно используется. Если говорить про UX, то ещё можно сохранить под каким-нибудь именем, шарить, использовать за основу... ой, погодите-ка, так же реализовано в TFS :)) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 20:04 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Дмитрий МухТак то был SOAP протокол. А GraphQL - это далеко не SOAP. Но суть, как я понимаю, одна и таже, как и у OData - возможность выполнять по сути любой запрос к БД/модели прямиком из клиента. HTTP в сиквеле выкосили уже в версии 2012 и ОДата как-то, похоже, тоже не взлетел особо. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 21:23 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttЗа такое решение, как вы предложили, разработчиков бы избили. "Господа, неужели вы нас будете бить?" (с) Я чота живой-здоровый пока что. А за P/R/G тоже избивают? Насколько сильно - с увечьями? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 21:26 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatДмитрий МухТак то был SOAP протокол. А GraphQL - это далеко не SOAP. Но суть, как я понимаю, одна и таже, как и у OData - возможность выполнять по сути любой запрос к БД/модели прямиком из клиента. HTTP в сиквеле выкосили уже в версии 2012 и ОДата как-то, похоже, тоже не взлетел особо.Да, всё это про работу с данными, а не про посев пшеницы :) Но не про запрос к БД прямиком из клиента, и у уж точно не про HTTP endpoints на уровне SQL Server ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2019, 22:34 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatОДата как-то, похоже, тоже не взлетел особо. Друг, намеренно игнорируешь ссылку, которую я привёл выше? OData живёт и здравствует, развивается, активно используется. Если нет истеричного хайпа, как у GraphQL, это ещё не значит, что "не взлетело". fkthatЯ чота живой-здоровый пока что. А за P/R/G тоже избивают? Насколько сильно - с увечьями? P/R/G решает другую задачу совсем, а не способ "обмануть" идеалы REST, то вообще из другой оперы, про классическое взаимодействие форм, отправляемых с браузера :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 16:20 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttДруг, намеренно игнорируешь ссылку, которую я привёл выше? OData живёт и здравствует, развивается, активно используется. Если нет истеричного хайпа, как у GraphQL, это ещё не значит, что "не взлетело". Живет и здравствует тем, что раз в год новый релиз выходит? Ну так jQuery тоже так живет и здравствует - кому только он сейчас уже нужен. hVosttP/R/G решает другую задачу совсем, а не способ "обмануть" идеалы REST, то вообще из другой оперы, про классическое взаимодействие форм, отправляемых с браузера :) Ну, если ты не видишь тут никакоих аналогий, то будь по твоему. Что будет, если я на странице результатов поиска полученных чистым постом без редиректа нажму Ф5? Как мне сохранить результат поиска в закладках? Как мне кнопкой "назад" вернуться к предыдущему поиску? И все эти заморочки просто из-за несоблюдения "идеалов REST". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 19:16 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVostt, Кстати, а ничего, что OData для получения данных как раз следует "идеалам REST" и везде GET использует? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 19:46 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatНу, если ты не видишь тут никакоих аналогий, то будь по твоему. Что будет, если я на странице результатов поиска полученных чистым постом без редиректа нажму Ф5?Зависит от того, как этот поиск реализован. Через отправку формы? Можно тогда увидеть то, как устроен метод обработки POST запроса в REST API? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 20:02 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatКак мне сохранить результат поиска в закладках?Результат поиска, или таки параметры поиска? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 20:04 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Дмитрий МухfkthatНу, если ты не видишь тут никакоих аналогий, то будь по твоему. Что будет, если я на странице результатов поиска полученных чистым постом без редиректа нажму Ф5?Зависит от того, как этот поиск реализован. Через отправку формы? Можно тогда увидеть то, как устроен метод обработки POST запроса в REST API? Берем случай ТСа - отправка обычной формы HTML. Будет выскакивать окно с предупреждением, которое, причем, обычного "домашнего" пользователя будет ставить в тупик. У меня мама, например, на каждый месседж-бокс мне звонит, даже если там в нем все расписано так, что ребенок дошкольного возраста понять должен. Дмитрий МухРезультат поиска, или таки параметры поиска? Параметры поиска, конечно. Назовем лучше это как "Сохранить поиск в закладках". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 21:46 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthathVostt, Кстати, а ничего, что OData для получения данных как раз следует "идеалам REST" и везде GET использует? Это неправда. http://docs.oasis-open.org/odata/odata/v4.01/csprd05/part2-url-conventions/odata-v4.01-csprd05-part2-url-conventions.html#sec_PassingQueryOptionsintheRequestBody ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 22:39 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatЖивет и здравствует тем, что раз в год новый релиз выходит? Ну так jQuery тоже так живет и здравствует - кому только он сейчас уже нужен. jQuery до сих пор используется очень активно, там, где не используются другие фреймворки. Для не-SPA приложений, jQuery всё также актуален, релизы не выходят часто, так как в нём всё уже есть, в основном, вводится поддержка нативного АПИ. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 22:41 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatКак мне сохранить результат поиска в закладках? Это другая задача. Тем более, АПИ поиска может измениться, поэтому твой сохранённый GET с кучей параметров, просто может не заработать. Т.е. имеем очередную проблему вместо решения. Разумеется, по возможности желательно использовать GET, особенно, если это сохраняется в адресной строке браузера. Сохранение в закладках, передача прямого адреса в тексте письма, -- всё так. Но это никак не обязывающее решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2019, 22:44 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttjQuery до сих пор используется очень активно, там, где не используются другие фреймворки. Да уж, видел я как он используется. Тысячестрочная лапша, где вперемешку свалены данные, обработчики событий и код обновления DOM. Особенно жесть, когда это все еще написано на адской функциональщине с дюжиной вложенных коллбеков и анонимных функций и замыканий а каждое выражение. Я некоторое время назад ушел с работы, где очень хорошо платили, потому что понял, что с той кучей гамна ужаса, которую к тому моменту написали там на jQuery уже ничего сделать просто нельзя. jQuery был очень крут для своего времени, почти что как C для своего (когда UI ограничивался консолью). Сейчас же, даже как личный опыт показывает, аппетиты заказчика в части вебовского Rich UI всегда растут как снежный ком, и при малейшем намеке на это надо сразу же перепрыгивать на какой-нибудь MVC-подобный фреймворк, иначе впереди ждет глубокая жопа. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 11:26 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatДа уж, видел я как он используется. Тысячестрочная лапша, где вперемешку свалены данные, обработчики событий и код обновления DOM. Особенно жесть, когда это все еще написано на адской функциональщине с дюжиной вложенных коллбеков и анонимных функций и замыканий а каждое выражение. Я некоторое время назад ушел с работы, где очень хорошо платили, потому что понял, что с той кучей гамна ужаса, которую к тому моменту написали там на jQuery уже ничего сделать просто нельзя. Проблема не в jQuery. Собственно, при отсутствии jQuery код, о котором вы говорите, был бы ещё раза в 2-3 страшнее. Ну и не рассчитан он как фреймворк для создания полноценных клиентских веб-приложений. fkthatjQuery был очень крут для своего времени, почти что как C для своего (когда UI ограничивался консолью). И почему же для текущего времени он вдруг перестал быть таким же крутым? Что такого изменилось качественно за это время? В браузерах появилось АПИ, которое реализует многое из того, что раньше было в jQuery, но он не перестал быть уродским и неудобным для использования. ПРоблема кроссбраузерности всё ещё существует. fkthatСейчас же, даже как личный опыт показывает, аппетиты заказчика в части вебовского Rich UI всегда растут как снежный ком, и при малейшем намеке на это надо сразу же перепрыгивать на какой-нибудь MVC-подобный фреймворк, иначе впереди ждет глубокая жопа. Зависит от задач. Разработчики на фреймворках дороги, найти нормальных тяжело. Для обычного контентного сайта jQuery с ограниченным интерактивом до сих пор один из лучших вариантов. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 12:53 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttНу и не рассчитан он как фреймворк для создания полноценных клиентских веб-приложений. Да. hVosttЧто такого изменилось качественно за это время? Изменились хотелки, хотельные от Web UI. hVosttДля обычного контентного сайта jQuery с ограниченным интерактивом до сих пор один из лучших вариантов. Да. Но за текущий год уже два раза сталкивался с проектами (нехилого размера), где на jQuery пытались писать достаточно навернутые именно веб-приложения, а вовсе не контентный сайт. Оба раза это был треш, угар, и содомия. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2019, 13:53 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthathVosttДля обычного контентного сайта jQuery с ограниченным интерактивом до сих пор один из лучших вариантов. Да. Но за текущий год уже два раза сталкивался с проектами (нехилого размера), где на jQuery пытались писать достаточно навернутые именно веб-приложения, а вовсе не контентный сайт. Оба раза это был треш, угар, и содомия. Я треш, угар и содомию наблюдал и на Backbone, Ember, на React, и на Angular (особенно на нём), и даж на Vue. И 90% это обычный говнокодинг, и где-то +/- 10% из-за проблем конкретных инструментов. В тоже время писали довольно сложное приложение с огромны количеством интерактива на jQuery. И норм, до сих пор используется, как b2b, так и b2c решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 00:44 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttВ тоже время писали довольно сложное приложение с огромны количеством интерактива на jQuery. И норм, до сих пор используется, как b2b, так и b2c решения. Сложный UI на jQuery без треша и угара - фактически это значит написать свой MVC (или MVVM, или MVP) фреймворк на jQuery и писать уже на нем - других вариантов я не вижу. Все это можно, только зачем, если уже готового понаписано хоть попой жуй. MVC и подобных придумали-то не от нечего делать, а как раз чтобы бороть все увеличивающююся сложность разработки UI. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 04:50 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatДмитрий Мухпропущено... Зависит от того, как этот поиск реализован. Через отправку формы? Можно тогда увидеть то, как устроен метод обработки POST запроса в REST API? Берем случай ТСа - отправка обычной формы HTML. Будет выскакивать окно с предупреждением, которое, причем, обычного "домашнего" пользователя будет ставить в тупик. Где у него отправка обычной формы HTML, покажите? Он использует axios, то есть XMLHttpRequests, то есть ajax. И, следовательно, с чего вдруг будет выскакивать окно с предупреждением? Вы не случай ТС рассматриваете, а свой какой-то в голове у себя придуманный :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 07:40 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatДмитрий МухРезультат поиска, или таки параметры поиска? Параметры поиска, конечно. Назовем лучше это как "Сохранить поиск в закладках". Берём GraphQL и к нему GraphiQL (an in-browser IDE for exploring GraphQL). В последней есть Query History, что наглядно иллюстрирует, что "Сохранить поиск в закладках" - это не проблема. А так как исходники выложены на github, то можно посмотреть и как это реализовано. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 07:47 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Дмитрий МухБерём GraphQL и к нему GraphiQL (an in-browser IDE for exploring GraphQL). В последней есть Query History, что наглядно иллюстрирует, что "Сохранить поиск в закладках" - это не проблема. А так как исходники выложены на github, то можно посмотреть и как это реализовано. Могу попробовать угадать, что в local storage, я сам так уже делал. Но дело в том, что, чтобы сохранить закладку в "favourites" браузера, все равно нужен какой-то урл, уникальный для конкретного поиска, напр. "/search/<search-id>", или "/search/?serachid=<serach-id>". И это станет работать только в случае SPA, которое сможет навигацию на этот урл перехватить и обработать на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 09:18 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatДмитрий МухБерём GraphQL и к нему GraphiQL (an in-browser IDE for exploring GraphQL). В последней есть Query History, что наглядно иллюстрирует, что "Сохранить поиск в закладках" - это не проблема. А так как исходники выложены на github, то можно посмотреть и как это реализовано. Могу попробовать угадать, что в local storage, я сам так уже делал. Но дело в том, что, чтобы сохранить закладку в "favourites" браузера, все равно нужен какой-то урл, уникальный для конкретного поиска, напр. "/search/<search-id>", или "/search/?serachid=<serach-id>".Нет, урл не нужен. fkthatИ это станет работать только в случае SPA, которое сможет навигацию на этот урл перехватить и обработать на клиенте.Так вы сами уже завели разговор о том, что аппетиты заказчика в части вебовского Rich UI растут как снежный ком :) Ему подавай чтобы на самой странице отображалось то, что искали в последнее время. Чтобы не надо было никакие закладки делать, чтобы всё само и т.д, и т.п. Вообщем решение зависит от задачи, а не одно решение на все случаи :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 09:31 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Дмитрий МухНет, урл не нужен. Как так-то? На ум приходит только сохранить в закладках какой-нибудь урл типа "javascript:alert('hello world')", но это уже какая-то вообще содомия. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 09:47 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatДмитрий МухНет, урл не нужен. Как так-то? На ум приходит только сохранить в закладках какой-нибудь урл типа "javascript:alert('hello world')", но это уже какая-то вообще содомия.А не надо ничего в закладках сохранять. Зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 12:47 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
skyANAА не надо ничего в закладках сохранять. Зачем?Вот только вчера отправлял результаты поиска туристических туров. На сайте всё сделано правильно, несмотря на то, что он SPA, я могу скопировать ссылку, отправить кому-то и он получит тот же самый результат поиска, который мы можем обсудить. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:09 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAА не надо ничего в закладках сохранять. Зачем?Вот только вчера отправлял результаты поиска туристических туров. На сайте всё сделано правильно, несмотря на то, что он SPA, я могу скопировать ссылку, отправить кому-то и он получит тот же самый результат поиска, который мы можем обсудить. Параметры поиска передаются POST-ом? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:11 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Shocker.Pro, что используется в качестве search-id? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:16 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
skyANAПараметры поиска передаются POST-ом? Да они могут передаваться хоть DELETE-ом, но чтобы перекинуть их по почте или скайпу или т.п. по любому надо чтобы инфа о запросе содержалась в УРЛе - иначе ведь ну никак. Просто при чистом GET надо в УРЛ все параметры пихать, а при POST+GET можно запихнуть только некий токен, который указывает на запрос сохраненный после POST на сервере. SPA в этом отношении ничего не меняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:18 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
skyANAShocker.Pro, что используется в качестве search-id? Да любая автогенеренная на сервере шняга. Тот же Guid, например. Я всю тактику раньше тут расписывал - по сути, полный аналог P/R/G. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:31 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
skyANAShocker.Pro, что используется в качестве search-id?Ненене. Там чистый гет. Я просто как пользователь говорю, что результат поиска в виде строки, которую я могу положить в том числе в закладки - мне нужен. Как он будет реализован - другой вопрос. Если ты говорил только в контексте POST, значит я не так понял ) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 13:52 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
Shocker.ProskyANAА не надо ничего в закладках сохранять. Зачем?Вот только вчера отправлял результаты поиска туристических туров. На сайте всё сделано правильно, несмотря на то, что он SPA, я могу скопировать ссылку, отправить кому-то и он получит тот же самый результат поиска, который мы можем обсудить. 1. Результаты поиска могут резко измениться через минимальное время, и вы будете обсуждать совершенно разные вещи. Например, отправляешь письмо с текстом "посмотри по ссылке второй и пятый вариант" -- результаты могут быть уже совершенно другими, когда письмо дойдёт до адресата. 2. Хорошее решение, это функционал "Расшарить результаты поиска", ты получишь специальную ссылку на сохранённые результаты, на которой уже ничего не изменится независимо от обстоятельств. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 14:08 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatSPA в этом отношении ничего не меняет. Заблуждение. Меняет всё. А если у вас мобильное приложение. Где вы там свою хвалёную GET-строку откопаете? М? Хотите конкретный функционал -- делайте его :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 14:09 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatSPA в этом отношении ничего не меняет. SPA может быть установлено как PWA, без адресной строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 14:11 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
hVosttА если у вас мобильное приложение. При чем тут вообще мобилы? Давай еще десктоп на делфи приплетем. Речь-то о вебе шла. PWA в ту же степь - это не веб приложение. А то так можно и VS Code назвать веб-приложением. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 14:51 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthathVosttА если у вас мобильное приложение. При чем тут вообще мобилы? Давай еще десктоп на делфи приплетем. Речь-то о вебе шла. PWA в ту же степь - это не веб приложение. А то так можно и VS Code назвать веб-приложением. Я к тому, что упарываться, чтобы обязательно весь запрос затолкать в GET ради возможности скопировать из адресной строки -- решение так себе, кроме озвученных мною проблем выше, также должны решаться и в PWA и в мобильных приложениях, где нет адресной строки. Поэтому очень даже при чём. У нас, например, ряд веб-приложений имеет прямые аналоги в виде мобильного приложения и/или PWA решения. fkthatА то так можно и VS Code назвать веб-приложением. Ну... Если вы считаете, что PWA это не веб приложение, то стоит наверное и закончить на этом дискуссию. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 15:35 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthathVosttА если у вас мобильное приложение. При чем тут вообще мобилы? Давай еще десктоп на делфи приплетем. Речь-то о вебе шла. PWA в ту же степь - это не веб приложение. А то так можно и VS Code назвать веб-приложением. .. сейчас модно писать мобильные приложения под Cordova/React Native и прочих, которые выполняются в WebView под Android, но выглядят, как нативные мобльные app ... Но это не отменяет того, что они написаны на JS, а за данными ходят на WebAPI, т.е. полноценное web-приложение ... Другое дело, что в тех же Angular/Vue.js/React есть собственный router, который позволяет навигацию хранить/настраивать без адресной строки как таковой ... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 15:52 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
carrotikДругое дело, что в тех же Angular/Vue.js/React есть собственный router, который позволяет навигацию хранить/настраивать без адресной строки как таковой ... Да ну. Роутер, если я совсем не дебил, как раз для того и нужен, чтобы мепить урл в адресной строке на жаваскрипткод и отслеживать его, урла, изменения. За эту хрень когда-то люди чорти сколько бились, чтобы в SPA "страницы" имели свои отдельный урлы, а не один " https://foo.bar.com/". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.10.2019, 18:04 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatДа ну. Роутер, если я совсем не дебил, как раз для того и нужен, чтобы мепить урл в адресной строке на жаваскрипткод и отслеживать его, урла, изменения. За эту хрень когда-то люди чорти сколько бились, чтобы в SPA "страницы" имели свои отдельный урлы, а не один " https://foo.bar.com/". Вы до сих пор путаете адрес к уникальному ресурсу, что напрямую связано с SEO и параметры запроса, для управления выводом ответа. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 00:16 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
fkthatcarrotikДругое дело, что в тех же Angular/Vue.js/React есть собственный router, который позволяет навигацию хранить/настраивать без адресной строки как таковой ... Да ну. Роутер, если я совсем не дебил, как раз для того и нужен, чтобы мепить урл в адресной строке на жаваскрипткод и отслеживать его, урла, изменения. За эту хрень когда-то люди чорти сколько бились, чтобы в SPA "страницы" имели свои отдельный урлы, а не один " https://foo.bar.com/". .. и это тоже, но вы всерьез думаете, что пользователи SPA вбивают урлы "страниц" (т.е. компонентов) в адресную строку, и по большому счету им не пофик, что там, в адресной строке написано? .. у них есть меню, кнопки "Купить/Заплатить/Логин"... И кнопку "назад" в роутере, кстати, можно выключить, чтобы щелканьем назад пользователь не вылетел, например, на страницу логина, если он уже авторизован ... да мало ли полезных функций у стека route ... я честно скажу, пока не знаю их всех... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 10:10 |
|
Передача объекта параметров в Get-запросе
|
|||
---|---|---|---|
#18+
carrotik.. и это тоже, но вы всерьез думаете, что пользователи SPA вбивают урлы "страниц" (т.е. компонентов) в адресную строку, и по большому счету им не пофик, что там, в адресной строке написано? Сто раз уже тут написали - сохранить "страницу" в закладках, передать по почте/скайпу, поместить ссылку на другой сайт. В общем, любая шняга, где ничем кроме самого урла оперировать не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2019, 10:51 |
|
|
start [/forum/topic.php?all=1&fid=18&tid=1354894]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
98ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 314ms |
0 / 0 |