0

マイクロフレームワークにRESTfulAPIリソースアーキテクチャを実装する作業をしています。最近開発したすばらしいルーティング機能を利用して、オブジェクト階層と並行してリソースパスをモデル化しています。(ああ、それは空想です!)

私が使用しているURI構文は次のとおりです。

'http:// www.site.com / resource [ ; key1 = param1 [ & key2 = param2 ] ]'

これにより、次のようなURIが許可されます。

'http://www.site.com/user;id=123/article;id=456'

これは次のようなものにマップされます(この機能をルーターに組み込んだ後):

$user->getByParams('id=123')->article->getByParams('id=456');

だからさらなる例:

'GET /user;id=123 GET'
    # read User object data matching id=123

'GET /user;id=123/article;id=456'
    # read Article object data matching id=456
    # belonging to User object matching id=123

'GET /user;name=john&age=20/article;title=hello%20world'
    # read Article object(s) data matching title='hello world'
    # belonging to User object(s) matching name='john' and age=20

私が抱えている問題は、最後の問題で、複数の結果をクエリデータ(LIKESQLではa'la)と照合することです。ワイルドカードを表すのに安全な文字は何でしょうか。アスタリスク( )は、 http://labs.apache.org/webarch/uri/rfc/rfc3986.html#reserved*のサブ区切り文字予約リストに表示されるため、エンコードされないままになります。おそらく、%25( )を使用する方が簡単でしょう。%

この問題は実装固有である可能性があることを理解していますが、これに類似したRESTful APIリソースアーキテクチャを実装する既存のフレームワークがあり、アイデアを参照できますか?

また、私はここで完全に穀物に反対していますか?

4

1 に答える 1

1

現在、パラメータを使用してURIテンプレートを作成する方法に関する最良のリソースはここにあります。

そうは言っても、リソース設計を行うときは、URI設計について考えることは絶対に避けてください。ブロックを描画して名前を付け、リソースを接続するリンクを表す矢印を描画して、リソースを設計しようとしています。これは、Webサイトを設計する方法と似ています。

次に、リソースとリンクが特定されたら、サーバーフレームワークが解析するのに最も簡単なURIスキームを作成できます。

于 2011-03-14T12:42:35.320 に答える