@dlangru

Страница 75 из 719
Dmitry
21.09.2016
17:08:45
просто до этого когда я писал там все было так: при обращении к урлу дергался обработчик вида: void hello(HTTPServerRequest req, HTTPServerResponse res)

Google
Dmitry
21.09.2016
17:14:30
а...

Oleg
21.09.2016
17:14:34
запрос к int getSum(int a, int b) будет выглядеть почти как написал

только первый знак ? будет

/sum?a=1&b=3

Dmitry
21.09.2016
17:15:11
понял, спасибо

Oleg
21.09.2016
17:15:16
обязательно должны совпадать имена параметров в запросе и в методе

Dmitry
21.09.2016
17:15:53
а само тело это не Form Body случаем?

или как оно там называется

Oleg
21.09.2016
17:16:20
а просто body не подходит?

да и у кого ты это смотришь?

Dmitry
21.09.2016
17:16:49
я про: "параметры передаются в теле запроса"

тело запросо как понимаю может быть разным — просто текст, json, form body и тд

Grigirii
21.09.2016
17:17:35
тело запроса в http это всегда просто строка

Google
Grigirii
21.09.2016
17:17:43
да, там можно json

Oleg
21.09.2016
17:17:44
это content-type вроде разный может быть

Grigirii
21.09.2016
17:18:07
но в случае post там обычно query строка

Oleg
21.09.2016
17:18:10
а пока не ввели повсеместно http2 везде текст

Grigirii
21.09.2016
17:18:27
?a=1&b=3

Oleg
21.09.2016
17:18:44
?a=1&b=3
это для get

Grigirii
21.09.2016
17:18:55
это для пост, то что идёт в тело

Dmitry
21.09.2016
17:19:38
string getInfo(Json x) { writeln(x["foo"]); return (тут-ответ-в-формате-json) } Вот так будет обработка JSON входящего выглядеть?

Grigirii
21.09.2016
17:19:42
да и ничто не мешает query параметры отдавать в post запрос. так тоже можно, но редко нужно

Oleg
21.09.2016
17:19:59
это для пост, то что идёт в тело
нет, в vibe это будет json

Grigirii
21.09.2016
17:20:32
а, ну для Rest API в vibe, да. что-то я совсем в общую теорию ушёл

тогда тело запроса просто {"a"=1, "b"=3}

Dmitry
21.09.2016
17:21:30
Grigirii код выше это для int postSum(int a, int b) ?

когда ты говорил про автоматическую сереализацю ты именно это имел ввиду? что vibed вытащит аргументы в порядке их очередности так?

Grigirii
21.09.2016
17:23:50
не в порядке очерёдности, а по имени

Dmitry
21.09.2016
17:24:40
а vibed любые типы сможет так сереализовать входящих данных?

Oleg
21.09.2016
17:24:54
Почти

Grigirii
21.09.2016
17:25:02
все базовые типа строк и чисел

Dmitry
21.09.2016
17:25:04
вот если я ему все пришлю просто как строку, а не json он ее сможет сереализовать?

Oleg
21.09.2016
17:25:16
И структуры простые

Google
Dmitry
21.09.2016
17:25:21
с content-type string

Grigirii
21.09.2016
17:25:36
json в http это всегда строка

Dmitry
21.09.2016
17:26:01
а... а content-type влияет?

Grigirii
21.09.2016
17:26:22
не уверен, но вообще не должен

Dmitry
21.09.2016
17:30:10
получается явное указания типа ответа string или Json особой роли не играет если и то и другое как текст передается. Просто правильнее указывать корректные типы так? Это для http и http2 верно? string getInfo(Json x)

Grigirii
21.09.2016
17:31:27
в json есть типы. число, строка, bool

как минимум это должно быть правильно

от версии http не зависит

Sergey
21.09.2016
17:43:50
content-type бывает text, но не string)

Dmitry
21.09.2016
17:46:31
пробую отправить Json из curl: echo {"aa" : "bb"} | curl -X POST —data-binary @- —dump - http://127.0.0.1/info но vibed ругается: The request body must contain a JSON object with an entry for each parameter. Код такой: string postInfo(Json x) { writeln(x["foo"]); return `{"aa":"bb"}`; }

Sergey
21.09.2016
17:49:08
а где json, который отправляете?

Dmitry
21.09.2016
17:49:37
сразу за echo идет

Sergey
21.09.2016
17:50:36
кстати, есть очень удобный апплет для хрома. postman - рекомендую

Dmitry
21.09.2016
17:50:46
а хорошо пасибо

Sergey
21.09.2016
17:51:32
что касается curl curl -H "Content-Type: application/json" -X POST -d '{"aa":"bb"}' http://127.0.0.1/info попробуйте

Dmitry
21.09.2016
17:52:16
я вот так сделал: curl -H "Content-Type: application/json" -X POST http://127.0.0.1:8080/info -d "{\"Name\":\"Test Value\"}" Пример взял из ответов на SO

только ошибка та же осталась

сейчас твой вариант попробую

Sergey
21.09.2016
17:53:26
это то же самое по сути

Dmitry
21.09.2016
17:54:07
ошибка осталась та же. значит в коде что-то не то. сейчас покажу его

Google
Dmitry
21.09.2016
17:54:44
http://codepad.org/tsVRP6qN

шлю запрос на к урлу: http://127.0.0.1:8080/info

так ему видимо кавычки не нравятся в запрсе который я в curl отправляю

щас попробую браузерный плагин

Sergey
21.09.2016
17:57:37
в коде не то

Dmitry
21.09.2016
17:58:36
да? и в чем я косячу?

Sergey
21.09.2016
17:59:34
я рекомендую начать вот отсюда http://vibed.org/docs#rest-interface-generator

и с постманом

будет проще

Dmitry
21.09.2016
18:01:48
хотя бы намекни, а то я так буду долго пытаться угадать в чем я не прав

Admin
ERROR: S client not available

Sergey
21.09.2016
18:07:51
не, это я тупанул про код. поздно у меня уже тут)

может и есть что-то но, не то, что я сначала подумал. сейчас запущу, гляну постманом. а то голова уже не соображает

точно в vibe такое слоглашение есть для методов с подобной сигнатурой string postInfo(Json x)?

для string getInfo() не работает

а не. извиняюсь. чет я вообще не в адеквате. надо идти спать)

и все-таки моя первая доглака, кажется, была правльной

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

да еще и объект foo, который не передаете

вот с таким вот документом работает {"x":{"foo":"test"}, "aa":"bb"}

Google
Sergey
21.09.2016
18:32:01
ой, "aa":"bb" там лишние

прошу прощения за неадекват, пойду отсыпаться

Oleg
21.09.2016
19:13:11
читал про этот недочёт где-то

rest api не может принимать просто json

вроде как

и там делали хук, что сначала принимается строка, а потом парсится в json

я не помню где это было и когда эти сообщения писались, да и точно ли этот вопрос был... =) но вроде как он)

Dmitry
21.09.2016
20:22:23
вот эту фразу не понял: "vibe уже распарсил json, а вы, насколько понимаю, птыаетесь получить сырой да еще из объекта x" что он мог распарсить если я отправляю в него: {"foo":"test"}

Oleg
21.09.2016
20:25:44
это строка

а json это структура данных в vibe

Dmitry
21.09.2016
20:27:11
и был хук для того, чтобы строку обрабатывать как json?

кстати почему-то предложенный post man мне POST запрос формирует в виде get запроса. Как я понимаю только get запрос в виде урла идет, а POST передается в теле

Oleg
21.09.2016
20:29:54
а ты где это пишешь?

сервис какой-то?

так...

давай сначала

вообще с самого начала

1 сек

Dmitry
21.09.2016
20:30:24
Сергей предложил плагин для браузера Post Man называется

Pavel
21.09.2016
20:30:39
POST запрос тоже может иметь get параметры в строке

+ еще он имеет тело

Oleg
21.09.2016
20:30:45
https://habrahabr.ru/post/215117/

Страница 75 из 719