2012-04-27 19 views
2

この例では2種類のクエリ文字列を表示します。 私は、Webサービスのためのクエリ文字列は、1以下2PHPとREST、クエリ文字列の選択方法

  1. http://localhost/findbyproductcode/4xxheua
  2. http://localhost/findbyproductcode?productcode=4xxheua

私の質問のように見えるべきであることを知っていることです:あなたは、PHPでの最初のものを管理するのですか?これはちょうど2番目のURLを書き換えないのですか?

#2クエリ文字列を使用すると、GET変数(?productcode = 4xxheua)を処理するfindbyproductcode.phpページがあり、このプロダクトコードで一部のデータベースをチェックしてデータを返すと仮定します。

#1はどのように動作するはずですか?私は4xxheua.phpを持っていますか? (明らかにそうではない...)...私はちょうどこれを得ない。

+0

_ "Webサービスのクエリ文字列は2よりも1のように見えるはずです" _ - なぜですか? – Halcyon

+0

私は本当に利便性を見ることはできませんが、それはよりエレガントであり、何とかそれを行う正しい方法です...多くの人々によって参照されています...しかし、これは単なるURL書き換えルールですか?私はいいえ、と私はちょうどこれがどのように動作する必要があるか把握することができません... – Mattia

+0

これは、REST Apiの仕事、url/resource_name/idの方法です。 Btwのサーバー側(レストサーバー)とクライアント側のURLは、そこに存在する多数の既存のソフトウェアによって処理されます。例えば、私は、要求を処理するためにCodeIgniter Restサーバーを使用し、クライアント側でBackbone.jsを使用しています。 GET/POST/DELETE/PUT – kernelpanic

答えて

2

1を2よりも好む唯一の理由は、1が意味的に直感的であるためです。

それはURLを持っていることは理にかなってのような:

http://www.myblog.com/article/2012-04-29/i-did-nothing-all-day

よりもむしろ

http://www.myblog.com/index.php?page=article&id=23423

たぶんそれはまたあなたのSEOのスコアを助けます。

ウェブサービスを構築している場合は、マシンがマシンと話をしている場合は、URLの内容は関係ありません。 すべての入力を受け入れ、入力データに基づいて内部的に 'ルーティング'を行うURLを1つだけ持つこともできます。

+0

そのURLを書き直す? – Mattia

+0

はい、URLをもっと光って見えるようにするだけです。 _technical_理由はありません。 – Halcyon

1

APIを書こうとしているならば、やり直す必要があります。はい、書き直しが必要ですが、すべてのパラメータのページが必要なわけではありません.Luracastには素晴らしいオープンソースがあります。レストラーを始めましょう。

+0

はい、シンプルなウェブサービス用のAPIを書くのは難しいです(私のクライアントはおそらくスマートフォンになるでしょう) – Mattia

1

#1を達成するための1つの例として、

1:(Apacheの上などのmod_rewrite)root/index.phpに(ように、と)、画像なしでCSSをすべてパスを送る
2:index.phpでは、$_SERVER['pathinfo']からパラメータを取得したり、別の方法。
3:解析して処理します。

あなたはApatcheとのmod_rewriteを使用している場合は、ドキュメントを確認してください。

0

うん、単にURLの書き換えを。私は、現時点でのSymfony 1.3を使用していて、そのhtaccessファイルは、次のようになります。この場合

Options +FollowSymLinks +ExecCGI 

<IfModule mod_rewrite.c> 
    RewriteEngine On 

    # uncomment the following line, if you are having trouble 
    # getting no_script_name to work 
    #RewriteBase/

    # we skip all files with .something 
    #RewriteCond %{REQUEST_URI} \..+$ 
    #RewriteCond %{REQUEST_URI} !\.html$ 
    #RewriteRule .* - [L] 

    # we check if the .html version is here (caching) 
    RewriteRule ^$ index.html [QSA] 
    RewriteRule ^([^.]+)$ $1.html [QSA] 
    RewriteCond %{REQUEST_FILENAME} !-f 

    # no, so we redirect to our front web controller 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

、ちょうどあなたのコントローラはindex.php作り、そしてあなたがそれに送られ、このバーチャルホストのためのすべてのURLを取得することができます。簡単!

関連する問題