3

ここ数週間、PHP (Laravel フレームワーク) で RESTful API を構築してきました。また、この API を使用する JavaScript フロントエンド (jQuery / バックボーン) を構築しています。

この API には、かなりの量のクエリ パラメータを必要とする GET リクエストがいくつかあります。それらのほとんどは ID の配列です。私はそれを次のように構成しました:

/api/cars?colors[]=1&colors[]=3&makes[]=6&makes[]=2&sold=false

(例: ID=1 の色は赤、ID=6 の色は Audi など)

PHP では、$_GET['colors'] からの配列の解析はそのまま使用できます。また、私が使用するとき

$.ajax({
  url: "someurl",
  method: "GET",
  data: {
    cars: theCarsArray,
    makes: theMakesArray,
    sold: false
  }
});

同様に完全に機能しているようです (配列は上記のように URL で送信されます)。私は疑問に思っています:これはRESTインターフェースでIDの配列を送信するという受け入れられたアプローチですか? このアプローチに欠点はありますか? 代替手段は何ですか?

4

1 に答える 1

1

私の経験では、これが配列値を PHP スクリプトに渡す方法として受け入れられています。また、PHP を使用しているので、既存のものを活用する必要があります。とはいえ、Web ページが他のプログラミング言語/フレームワークで実装されている場合、配列値は通常そのようには渡されません。場合によっては、次のように表示されます。

/api/cars?colors=1&colors=3&makes=6&makes=2&sold=false

これらの言語/フレームワークでは、多くの場合、リクエスト パラメーターにスカラーまたは配列としてアクセスするためのメソッドが用意されています。したがって、実装を公開しています。PHP を使用していることを隠したい場合は、上記のように変更できますが、リクエスト パラメータを解析する機能を追加する必要があります。私が言ったように、あなたはこれを PHP で実装しているので、すぐに使えるものを利用することに何の問題もないと思います。

私の唯一の提案は、/api/cars/(おそらく) 車のコレクションを返しているため、URL エンドポイントを に変更することであり、それはより RESTful なアプローチのようです。

とにかく、ちょうど私の 2 セント。お役に立てば幸いです。

于 2012-10-18T21:04:08.950 に答える