
Oleg
21.09.2016
20:31:05
не более

Dmitry
21.09.2016
20:31:08
"POST запрос тоже может иметь get параметры в строке"
Вот это реально новость. Не знал

Oleg
21.09.2016
20:31:24
прочти статью на хабре

Dmitry
21.09.2016
20:31:30
ок хорошо

Google

Oleg
21.09.2016
20:32:28
например, что в post запросе нет параметров в url, параметры передаются в теле
но никто не запрещает тебе создать такой запрос руками
просто vibe его не будет так отрабатывать правильно

Dmitry
21.09.2016
20:33:46
Просто раньше я писал код:
void handleRequest(HTTPServerRequest req,
HTTPServerResponse res)
т.е. эта функция имела два параметра запрос и ответ
сейчас хочу освоить генератор rest но он как-то иначе работает
и к req я мог обратиться как к типу JSON
сейчас получается надо писать как-то так:
получается мне надо писать
Json postInfo(Json x) // если принимаю JSON запрос и отдаю JSON ответ
{
}
Но как Олег сказал получается, что x прилетает как строка (или я не так понял)

Oleg
21.09.2016
20:49:46
всё приходит как строка
но часть её парсится в json (тело запроса)
тебе зачем гонять json из и в интерфейс?
ты не знаешь что лежать должно там?

Google

Oleg
21.09.2016
20:50:31
странная ситуация в целом
вот

Sergey
22.09.2016
03:10:10
если вы отправите вот этот джейсон (это согласно вашему контракту (или как это в вайбе называется)), то ваш код отработает.
Т.е. проблема была в том, что ваш контркат требует, чтобы в джейсоне был ключ "x", со значением - объектом, в котором есть ключ "foo".
т.е. вот это необходимый и достаточный json,
который нужно отправить вашей реализации
{"x":{"foo":"[подставить нужное значение]"}}


Dmitry
22.09.2016
06:38:31
@deviator "тебе зачем гонять json из и в интерфейс?"
делаю запрос к сайту, сайт дает мне ответ.
—---------
"всё приходит как строка
но часть её парсится в json (тело запроса)"
В функции: foo(string x) или foo(Json x) в x будет содержаться только тело запроса или весь запрос?
Sergey ок спасибо, щас попробую

Oleg
22.09.2016
08:39:10

Dmitry
22.09.2016
08:39:22
Да

Oleg
22.09.2016
08:39:35
ну так зачем json, то тогда?
ты же знаешь какие данные будут ходить
например в этом json у тебя 2 массива, один точек, другой имён например
такую сигнатуру и делаешь
int postFunc( Point[] parr, string[] narr );
а в json будет { "parr" : [ {"x":2, "y":3}, ... ], "narr": [ "name1", ... ] }
(где 3 точки это не синтаксис такой, просто элементы могут ещё идти)
в этом и смысл всех этих rest генераторов
а возвращаемое значение тоже нормальное делаешь, какое в D используешь
в случае исключительных ситуаций можешь выбрасывать исключение, мы сейчас пишем json в msg исключения и норм это хавается
тоесть вместо объекта, который нужен будет приходить json из msg

Google

Oleg
22.09.2016
08:45:18
туда по стилю можно записать код ошибки, название и описание (из-за чего она могла произойти)

Dmitry
22.09.2016
12:14:33
"ну так зачем json, то тогда? ты же знаешь какие данные будут ходить"
Тоесть ты предлагаешь просто обозначить Дишными типами данных данные и Вайб их типа сам к ним будет приводить? Просто чем больше пытаюсь понять, тем сильнее путаюсь
Короче перечитал все еще раз. Реально пришел к мысли, что генератор интерфейса позволяет не только Урлы создавать путем создания Интерфейса и Класса его реализующего, но и суть его заключается в следующем:
Для входящего запроса мы описываем в какой-то структуре то что прилетает. Далее когда данные прилетают вайб автоматом пытается замаппить прилетевшие данные на эту структуру.
Я хоть примерно близко мыслю?
Или опять мимо?

Oleg
22.09.2016
13:03:36
Примерно близко

Dmitry
22.09.2016
13:05:06
а это именно фишка REST в этом? Просто ранее я думал, что REST это просто логика представления данных оп определенным Урлам

Pavel
22.09.2016
13:06:18
Правильно думал
Но одно не мешает другому. Продставляем данные по урлам + внутри автомагически собираем. Все рады.
Если кто-то твое АПИ будет использовать, то он вообще не узнает как у тебя внутри чего на структуры данных мапится. Он увидит только REST интерфейс.

Dmitry
22.09.2016
13:08:13
Кстати, а почему вот тут ошибка 404?

Pavel
22.09.2016
13:09:05
Может рутовый путь не указан или указан неправильно?

Dmitry
22.09.2016
13:09:36
м... щас попробую. Просто я думал, что без него корень будет рутом
@rootPathFromName
interface MyAPI
же сгенерит урл:
/my_api/

Peter
22.09.2016
13:11:49
привет

Dmitry
22.09.2016
13:11:54
привет)

Peter
22.09.2016
13:11:54
подскажите плиз
на винде как скомпилить gui app
не console
есть какой-то магический флаг?

Google

Peter
22.09.2016
13:12:39
без WinMain()
переписывать лень

Dmitry
22.09.2016
13:12:50
а что пишет то? Что за ГУИ?

Peter
22.09.2016
13:12:52
нагуглить не получилось
windows subsystem имею ввиду

Dmitry
22.09.2016
13:13:32
а...
WinAPI дергаешь?

Admin
ERROR: S client not available

Peter
22.09.2016
13:13:57
да нет, пока без него
я пока учу)

Dmitry
22.09.2016
13:16:02
покажи код, я что-то не пойму что именно ты делаешь
или скрин кинь

Peter
22.09.2016
13:16:29
да любой хеоворд к примеру возьмем
например в mingw есть флаг -mwindows

Dmitry
22.09.2016
13:17:33
Ну погоди, ты какой тулкит используешь?

Peter
22.09.2016
13:17:52
компилятор в смысле? dmd

Dmitry
22.09.2016
13:18:05
нет, у тебя гуи же чем-то отрисовывается
В С++ есть GTK и Qt
это как пример

Google

Peter
22.09.2016
13:18:25
блин, это не важно, на самом деле
главное в хидерах какое число в subsystem будет
test.exe: PE32 executable (console) Intel 80386, for MS Windows

Dmitry
22.09.2016
13:19:24
Что-то не понимаю о чем ты. Берем dlangui ищеv там пример hello world и компилируем командой: dub

Peter
22.09.2016
13:19:26
видишь там console?

Dmitry
22.09.2016
13:19:34
да

Peter
22.09.2016
13:19:37
ясно, ладно
буду дальше гуглить

Dmitry
22.09.2016
13:20:07
DFL можешь еще погуглить и dlangui
Как оказалось, аннотация @path не работает без указания метода. Надо писать так:
@path("info") @method(HTTPMethod.GET) string Info();
аннотация метода может быть задана не явно, а через префикс get вот так:
@path("info123") string getInfo();

Peter
22.09.2016
13:23:40
$ pedump t | grep Subsystem
[?] can't find file_offset of VA 0x502c
SubsystemVersion: 4.0
Subsystem: 2 2 WINDOWS_GUI

Dmitry
22.09.2016
13:25:19
а понял о чем ты, нет тут не подскажу
хотя погоди, вот эту тему посмотри http://www.digitalmars.com/d/archives/digitalmars/D/learn/Hide_console_of_gui_program_coded_by_gtkD_41799.html
$ dmd.exe -L/SUBSYSTEM:WINDOWS gtkd_app.d

Peter
22.09.2016
13:27:21
а подскажите еще
вот я собираю DCD и у меня в конце unable to fork: Cannot allocate memory
это у меня что-то или там в мастере код не рабочий?
буду очень благодарен за ответы

Pavel
22.09.2016
17:05:14
Похоже что у тебя на машине не хватает памяти