我正在创建一个API来提供一些应用。
因此,应用程序可以调用这些可能的URL来从数据库中获取信息;
mysite.com/api/v1/get/menus/list_tblname1.json.php
mysite.com/api/v1/get/menus/list_tblname1.json.php?type=arr
mysite.com/api/v1/get/menus/list_tblname2.json.php
mysite.com/api/v1/get/menus/list_tblname2.json.php?type=arr
在php中,我已经有了从URL中获取tblname
的代码,并将所有表内容返回给我。它运作良好(它不是最终版本)。
但现在我发现自己为URL指向的每个页面复制并粘贴相同的代码。这是代码:
<?php
header('Content-Type:application/json');
include_once '../../../../class/db.php';
$verb=$_SERVER['REQUEST_METHOD'];
$filePath=$_SERVER['SCRIPT_NAME'];
$split1 = explode("/", $filePath);
preg_match("/(?<=_)[^.]+/", $split1[5], $matches);
$tableName = $matches[0];
if ($verb=="GET") {
header("HTTP/1.1 200 ok");
if(isset($_GET['type']) && $_GET['type']=="arr"){
echo db::get_list($tableName,'arr');//Reply ARRAY
}
else{
echo db::get_list($tableName);//Reply JSON
}
}
else{
die("Nothing for you at this page!");
}
我的意思是,我在每个页面中都有相同的代码。
list_tblname1.json.php
list_tblname2.json.php
我不知道如何解决这种情况,但我认为这是个案 重写规则。
所以,我认为一个可能的解决方案是创建一个可以调用的页面
例如returncontent.php
并在服务器中创建规则,在请求certanlly页面时应指向同一页面并将参数$tableName
传递给页面。我想我应该将正则表达式传递给我的服务器并在$tableName
内使用$ _GET [](我认为)抓住returncontent.php
。
我不确定。
我正在使用NginX。
如何在这种情况下实现它?
答案 0 :(得分:0)
通常,在NginX中解析URI并将结果传递给下游是不好的做法。
相反:mysite.com/api/v1/get/menus/returncontent.php?file=list_tblname2.json
不需要更改NginX。在PHP中解析查询参数(file
)。