マイクロフレームワークに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
私が抱えている問題は、最後の問題で、複数の結果をクエリデータ(LIKE
SQLではa'la)と照合することです。ワイルドカードを表すのに安全な文字は何でしょうか。アスタリスク( )は、 http://labs.apache.org/webarch/uri/rfc/rfc3986.html#reserved*
のサブ区切り文字予約リストに表示されるため、エンコードされないままになります。おそらく、%25( )を使用する方が簡単でしょう。%
この問題は実装固有である可能性があることを理解していますが、これに類似したRESTful APIリソースアーキテクチャを実装する既存のフレームワークがあり、アイデアを参照できますか?
また、私はここで完全に穀物に反対していますか?