@dlangru

Страница 76 из 719
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 запрос тоже может иметь get параметры в строке" Вот это реально новость. Не знал
просто в vibe есть некоторые соглашения (не знаю насчёт остальных фреймворков, но видимо соглашения стандартные) и генерируемый код их выполняет

например, что в 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
странная ситуация в целом

но часть её парсится в json (тело запроса)
потом десериализуется в параметры метода

вот

Sergey
22.09.2016
03:10:10
кстати почему-то предложенный post man мне POST запрос формирует в виде get запроса. Как я понимаю только get запрос в виде урла идет, а POST передается в теле
там в левом верхнем углу вкладки можно выбирать HTTP-метод. По умолчанию - GET. может быть в этом дело? Еще важно выбрать Content-Type, удобнее всего для json будет так: в разделе body, непосредствено над полем для тела, есть несколько опций для форматов, вам нужно в крайнем правом дропдаун-листе выбрать application/json. В таком случае, будет еще и синтаксис подсвечиваться. Другой способ - указать непосредственно в хэдерах, тогда в разделе body нужно будет выбрать "raw" А по поводу того, что я писал про парсинг, я ошибся. Просто недосып лютый и чет голова в пол силы работала)

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

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

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
DFL можешь еще погуглить и dlangui
https://asciinema.org/a/2x4yw2fnhk0voptgjef9gkw1v

$ 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
$ dmd.exe -L/SUBSYSTEM:WINDOWS gtkd_app.d
оно, благодарствую

а подскажите еще

вот я собираю DCD и у меня в конце unable to fork: Cannot allocate memory

это у меня что-то или там в мастере код не рабочий?

буду очень благодарен за ответы

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

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