2016-10-31 21 views
1

私はいくつかのアプリを提供するためのAPIを作成しています。この例でルールNginXを書き換える方法は?

したがって、アプリケーションはデータベースから情報を得るためにこれらの可能なURLを呼び出すことができます。 PHPで

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 

私はすでに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を渡す必要があるサーバーでルールを作成することができます1ページを作成することだと思います。私は正規表現を私のサーバに渡し、$ _GET [](私が思う)の$tableNamereturncontent.phpの中に入れなければならないと思う。

私はそれについては分かりません。

NginXを使用しています。

このシナリオではどのように実装するのですか?

答えて

0

NginXでURIを解析し、結果を下流に渡すことは、原則として悪いことです。むしろ

:必要なnginxのへmysite.com/api/v1/get/menus/returncontent.php?file=list_tblname2.json

変更はありません。 PHPのクエリパラメータ(file)を解析します。

+0

これ以外にも、ORMを考慮する必要があります。 propelorm.org – rmharrison

+0

あなたのアイデアは素敵で清潔でした。私に大量のコードを保存してください!私が 'mysite.com/api/v1/get/menus/returncontent.php?tbl = tblname.type'したのは、 – zwitterion

+0

です。それは '?tbl = tblname.json'または'?tbl = tblname.arr'です。このプロジェクトの – zwitterion

関連する問題