Я создаю API для подачи некоторых приложений.Как переписать правила NginX в этом примере?
Таким образом, приложение может вызывать эти возможные 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 У меня есть уже код, который захватывает tblname
из URL и дать мне обратно все содержимое таблицы. Он работает хорошо (это не окончательная версия). Но теперь я нахожу себя копированием и вставкой того же кода для каждой страницы, на которую указывает 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.
Как реализовать его в этом сценарии?
Как в стороне, вы можете рассмотреть ORM, например. propelorm.org – rmharrison
Ваша идея была приятной и чистой. Сохраните массу кода! – zwitterion
, кстати, я сделал 'mysite.com/api/v1/get/menus/returncontent.php? Tbl = tblname.type'. Это может быть '? Tbl = tblname.json' или'? Tbl = tblname.arr'. – zwitterion