Помогите разобраться с запросом

jakal222

Добрый день
У меня возник разрыв шаблона на таком запросе:
 http://example.ru/newapi/v2/json/products/?brand[]=91817&brand[]=1631  

Кто-нибудь может обосновать плюсы передачи параметров в таком виде вместо привычного
 http://example.ru/newapi/v2/json/products/?brand=91817,1631 

zorin29

Небось, упаковкой и распаковкой параметров занимается какой-то фреймворк, он и решает, как их передавать.
С точки зрения фреймворка первый вариант может быть лучше, т.к. не предполагает разбора языка и специальных символов-сепараторов.
А может, просто так сложилось веками, и нет рационального объяснения.

evgen5555

В гугле ищется за пару минут
http://apidocs.mailchimp.com/gettingstarted/serialized_http...

jakal222

Небось, упаковкой и распаковкой параметров занимается какой-то фреймворк, он и решает, как их передавать.
а что это за фреймворк такой диковинный, не подскажешь? ребята на php делают все

marusya68

плюс очевидный и довольно мощный - для твоего варианта требуется дополнительный JS код, для ихнего - нет.

artimon

Это простой PHP
В первом случае $_GET['brand'] это готовый массив с двумя элементами, а во втором тебе придётся самому из строки делать массив.

uncle17

апиридил.
Такой "привычный" я первый раз вижу. Хотя последнее время приходится вроде бы опытных верстальщиков обучать, что можно в форме писать поля с именем с квадратными скобками

marusya68

а во втором тебе придётся самому из строки делать массив.
это то делается одной строкой при априорных знаниях о значениях.
дело в другом - в том что описал я в своём посте.

jakal222

это то делается одной строкой при априорных знаниях о значениях.
дело в другом - в том что описал я в своём посте.
сомнительный плюс.
в первом случае у меня куча проблем использования апи на устройствах, во втором - отсутствие проблем.
но, все же, как данный формат передачи параметров называется по науке?

marusya68

это не плюс а минус, я ж говорю, что твой метод - это МИНУС, так как надо применять JS и потом еще на серваке разбирать строку в массив.
а то как они сделали - это нативно, и никаких проблем с апи не несет.

jakal222

это не плюс а минус, я ж говорю, что твой метод - это МИНУС, так как надо применять JS и потом еще на серваке разбирать строку в массив.
а то как они сделали - это нативно, и никаких проблем с апи не несет.
хорошо, это проблема для клиента.
Как данная передача параметров по науке называется?

kill-still

Это только если на сервере пыхапе. ;)

marusya68

это не проблема ни для клиента ни для апи. потому что это НАТИВНый способ =)
и не только на пыхпыхе.
а название такого способа где то тут
http://tools.ietf.org/html/rfc3986

Dasar

Как данная передача параметров по науке называется?
php-шная )
ps
в гугле всплывает по такому запросу:
php form post multiple values with same name

uncle17

вот тут всё раскрывается. Да, в пхп, но кагбе скорее это стандарт, чем какой-то запятуй
http://stackoverflow.com/questions/1010941/html-input-arrays

jakal222

вот тут всё раскрывается. Да, в пхп, но кагбе скорее это стандарт, чем какой-то запятуй
Т.е. использование данной нотации для api мобильных устройств с RESTful и остальным вполне приемлемо?
Похоже, что это заморочка от php, как и упоминалось выше. Нет никаких оснований делать так для апи мобильников, если такие вещи используются для верстальщиков и в html - формах.
Твиттер написан на scala сейчас, но привожу его в пример как достойный рассмотрения REST апи
Да и всякие facebook / twitter / vk не используют подобные вещи в api
 Twitter statuses lookup
 Users search

kill-still

не все стандарты одинаково полезны. :)
http://stackoverflow.com/questions/417142/what-is-the-maximu...

marusya68

не все стандарты одинаково полезны.
а я и не говорил обратное. очевидно что через GET тут вообще не надо делать, это надо делать через POST

uncle17

лучше не делать конечно, когда ты не знаешь, что на том конце. Можно делать так, как ты написал, или что-нибудь вроде ?var_index1=val1&var_index2=val2, но это монопенисуально - так же потом руками разбирать, что, конечно, занимает одну-две строчки.
Просто с пхп на бэкенде так удобно, честно. И то, кстати, не всегда :))) Когда надо разбирать не $_REQUEST, а argv, то придется руками парсер массивов писать, ага :))

marusya68

Т.е. использование данной нотации для api мобильных устройств с RESTful и остальным вполне приемлемо?
в исходном посте нет ни слова про REST или про мобильники, но зато есть модная фраза про разрыв шаблона из НЛП :)

marusya68

Просто с пхп на бэкенде так удобно, честно. И то, кстати, не всегда :))) Когда надо разбирать не $_REQUEST, а argv, то придется руками парсер массивов писать, ага :))
мы ща вообще на кофейной гуще гадаем, видишь выяснилось что речь про REST для андроида вообще. ни задача не понятна, ни кто пишет и что и зачем)

jakal222

в исходном посте нет ни слова про REST или про мобильники, но зато есть модная фраза про разрыв шаблона из НЛП :)
согласен :) ладно, теперь я все выяснил, спасибо всем :)

Bibi

допустим, что ты передаешь не числа, а строчки, в которых может содерждаться запятая
как бы тогда выглядел второй вариант?

jakal222

допустим, что ты передаешь не числа, а строчки, в которых может содерждаться запятая
как бы тогда выглядел второй вариант?
http://imgs.xkcd.com/comics/exploits_of_a_mom.png

katrin2201

%2C

artimon

А добрый nginx по дороге это разэскейпит обратно в запятую и приплыли

katrin2201

Ну да, мы не умеем настраивать нгинкс, поэтому мы в урл запихаем нехьюманридбл формат с аховым оверхедом, так?
Ну и вообще, %2C сам по себе должен енкодиться в %252C для передачи.
Я могу понять такое решение в пхп, где важнее была универсальность. Но делать такое в своем апи это просто на отъебись.

artimon

Я умею, но судя по вопросам на stackoverflow/тостере и т.п. настраивать что-либо умеют единицы.
Ну и вообще, %2C сам по себе должен енкодиться в %252C для передачи.
И вот тут (если мы всё ещё про JS) ты заставишь автора вместо простого

artists = ['Beatles, The', 'Pink Floyd'];
param = artists.join(',');
...

заставляешь писать код который предварительно заэскейпит каждый элемент массива.
Это несложно, но всё равно уже не так просто, как казалось в начале…

kill-still

а нефиг в урл пихать то, что не id. :p

uncle17

скажи это пользователю

kill-still

если он сам урл правит - то ссзб!

uncle17

это не означает, что на принимающей стороне не должно быть защиты от дураков.

kill-still

не нашли объекта по id => шлем нахуй
какая ещё защита нафиг?

katrin2201

заставляешь писать код который предварительно заэскейпит каждый элемент массива
В смысле я заставляю? А что автор будет делать со слешами, амперсандами, вопросами, знаками равенства и прочими юникодами в именах?

serega1604

В смысле я заставляю? А что автор будет делать со слешами, амперсандами, вопросами, знаками равенства и прочими юникодами в именах?
они автоматом урл-декодятся обычно, а тут нужно уже декодированное значение декодировать второй раз.
Оставить комментарий
Имя или ник:
Комментарий: