Welcome! Log In Create A New Profile

Advanced

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

Maxim Dounin
September 20, 2019 09:24AM
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 {
default 1;
car 0;
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
Subject Author Posted

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

darksmoke September 20, 2019 05:01AM

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

Maxim Dounin September 20, 2019 09:24AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 191
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready