繁体   English   中英

RESTful API的nginx配置

[英]nginx configuration for a RESTful API

我是nginx和php的初学者,所以请原谅我的基本问题。

对于基于RESTful的API(nginx + php),我需要一些关于nginx配置的帮助。

以下是nginx配置的相关片段(如此处所示 ),用于将所有/ api / v1 / *请求重定向到我的apiv1.php脚本:

    server {
        server_name myServer;
        root /usr/share/nginx/html;
        location /api/v1/ {
          try_files $uri $uri/ /apiv1.php?$args;
        }

        location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }

现在的问题是,当我在浏览器中输入http:// myServer // api / v1 / resource / GetInfo时,apiv1.php脚本似乎没有收到“resource / GetInfo”。 实际上,_GET和_REQUEST是空的,但_SERVER看起来还不错!

在我的/etc/php5/fpm/php.ini中,启用了以下相关配置:

request_order = "GP"
variables_order = "GPCS"
register_argc_argv = Off
auto_globals_jit = On.

你可能知道为什么php _GET和_REQUEST是空的吗? 这只与我的php配置有关吗?

最好的问候,M。

替换这个:

location /api/v1/ {
    try_files $uri $uri/ /apiv1.php?$args;
}

在服务器块中包含以下内容:

rewrite ^/api/v1/([^/]+)/([^/]+)/?$ /apiv1.php?class=$1&method=$2? last;

创建一个名为apiv1.php的php文件,并使用以下代码行放在Web服务器的根目录中:

<?php
$class  = filter_input(INPUT_GET, 'class',  FILTER_SANITIZE_STRING);
$method = filter_input(INPUT_GET, 'method', FILTER_SANITIZE_STRING);

echo $class;
echo '<br />';
echo $method;

通过访问浏览器中的以下链接进行测试:

http://myServer/api/v1/members/getInfo

如果其他人点击此页面,经过一番研究后我会得到解决方案:

location ~ ^/api/v0/(.*)/?$ {
    try_files $uri $uri/ /v0.php?req=$1&$args;
}

这里我不限于类/方法结构,位置似乎比重写更具可读性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM