Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Неуказанные параметры при вызове модуля. #20

Open
ivanych opened this issue Feb 1, 2016 · 11 comments
Assignees

Comments

@ivanych
Copy link

ivanych commented Feb 1, 2016

Допустим, некий метод в моём API принимает два параметра. Параметры необязательные и независимые.

Я делаю сват-модуль, описывающий этот метод:

curl_params=" \
--data-urlencode 'param_1=%param_1%' \
--data-urlencode 'param_2=%param_2%' \
}

Если я вызову модуль так:

run_swat_module(
    GET => '/method',
    {   
      param_1 => 'value_1',
    },
);

то сгенерируется такой запрос:

GET /method?param_1=value_1&param2=%param_2%

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

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

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

@melezhik
Copy link
Owner

melezhik commented Feb 1, 2016

Смысд мне ясен. Надо подумать. Хочется, что бы подобное поведение было настраваемым, т.к разным людям могут поднадобиться разное поведение.

Подобного рода настройки можно вынести в swat.ini, например:

swat_skip_module_empty_parameter=1

ну или как-то придумать более подходящее название ...

@melezhik melezhik self-assigned this Feb 1, 2016
@ivanych
Copy link
Author

ivanych commented Feb 1, 2016

Я даже не знаю, зачем может понадобиться другое поведение... Вроде же логично: задал параметры - они передались, не задал - не передались. Зачем может понадобиться отправка параметра в виде %param%?

@melezhik
Copy link
Owner

melezhik commented Feb 1, 2016

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

@ivanych
Copy link
Author

ivanych commented Feb 1, 2016

А в чем разница?

@ivanych
Copy link
Author

ivanych commented Feb 1, 2016

В CGI же нету какого-то NULL, который "осмысленно не передан". Параметр либо передан, либо нет.

@melezhik
Copy link
Owner

melezhik commented Feb 1, 2016

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

@ivanych
Copy link
Author

ivanych commented Feb 1, 2016

Ты, наверное, предполагаешь, что кому-то может понадобиться передать имя параметра без указания значения? Не знаю, зачем это может быть нужно, но пусть. Значит, нужно просто отправлять пустое значение. Это ничего не должно сломать.

А уж если включен параметр wat_skip_module_empty_parameter=1, то тогда вообще имя параметра не включать в запрос.

@ivanych
Copy link
Author

ivanych commented Feb 1, 2016

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

@melezhik
Copy link
Owner

melezhik commented Feb 1, 2016

Ну т.е. да, обнулять плейсхолдеры

ок

убирать параметры совсем

предлагаю все же оставлять как есть - пустым, т.е. в твое случае в curl_params будет

param1=value1&param2=

незаданный параметр - значит пустой

@ivanych
Copy link
Author

ivanych commented Feb 1, 2016

незаданный параметр - значит пустой

Это по умолчанию надо сделать.

Но еще можно опционально сделать убирание незаданных параметров вообще.

@melezhik
Copy link
Owner

melezhik commented Feb 1, 2016

Ok, понял тебя, буду думать

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants