Re: Ответ в зависимости от переданного параметра.

2019-09-20 Пенетрантность Maxim Dounin
Hello!

On Fri, Sep 20, 2019 at 05:01:06AM -0400, darksmoke wrote:

> Добрый день
> подскажите, пожалуйста как такое можно реализовать.
> Есть GET запрос, в нем передается параметр, varID=car
> 
> Вопрос:
> Как в зависимости от того что пришло в  varID вернуть разный ответ
> 
> 
>  if ($arg_varID !~* ("car"|"moto") ) {
>Вернуть JSON
> }
> else
> {
>root $root_path/modules;
> }
> 
> Т.е. если НЕ car или Не moto, то вернуть JSON.  А если совпало, то загрузить
> статику

Вариантов масса.  Например, можно сделать ровно то, что у вас 
написано, с точностью до правильно составленного регулярного 
выражения:

if ($arg_varid ~ "^(?!car$|moto$).*$") {
return 200 '{ "json": 1 }';
}

То, что внутрь if'а не попадёт - будет обработано обработчиком по 
умолчанию, то есть как статика.  Директиву root можно задать в 
любом месте (вот только не надо в неё совать переменные без нужды).

Или же можно воспользоваться инструкцией break для окончания 
обработки инструкций модуля rewrite:

if ($arg_varid = "car") {
break;
}

if ($arg_varid = "moto") {
break;
}

return 200 '{ "json": 1 }';

Так как дальнейшая обработка инстураций rewrite-модуля после break 
прекращается, то return сработает только если $arg_varid не "car" 
и не "moto".

Если возможных значений может быть много, то эффективнее всего 
сделать map, с помощью которого получить готовое условие для 
проверки:

map $arg_varid $need_json {
default1;
car0;
moto   0;
}

if ($need_json) {
return 200 '{ "json": 1 }';
}

Подробнее в документации тут:

http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html
http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html#if
http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html#return
http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html#break
http://nginx.org/ru/docs/http/ngx_http_map_module.html

-- 
Maxim Dounin
http://mdounin.ru/
___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru

Ответ в зависимости от переданного параметра.

2019-09-20 Пенетрантность darksmoke
Добрый день
подскажите, пожалуйста как такое можно реализовать.
Есть GET запрос, в нем передается параметр, varID=car

Вопрос:
Как в зависимости от того что пришло в  varID вернуть разный ответ


 if ($arg_varID !~* ("car"|"moto") ) {
   Вернуть JSON
}
else
{
   root $root_path/modules;
}

Т.е. если НЕ car или Не moto, то вернуть JSON.  А если совпало, то загрузить
статику

Posted at Nginx Forum: 
https://forum.nginx.org/read.php?21,285655,285655#msg-285655

___
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru