0

私は、名前、生年月日、星座、出生状態の 4 つのフィールドをクエリできるクエリ インターフェイスを持っています。ユーザーは、これらのフィールドのいずれかに値を指定できます。私は AngularJS (ここでは重要ではありません) と YiiFramework (素材) を使用しています。

これに似た質問への回答を見たことがありますが、ほとんどの場合、クエリ文字列パラメーターを使用することになります。urlManager でそれを説明できますが、「正しい」RESTful な方法でこれを行うことをお勧めします。これを行う方法を示す例を次のように見ました。

/myservice/index.php/names/jones?birthyears=&signs=leo&birthstates=maine - 誕生年が提供されていないことを意味します

空白の値をスキップするパスでこれを完全に行うという私の考え。これは合理的なアプローチですか?

/myservice/index.php/api/modelname/names/jones/birthyears//signs/leo/birthstates/maine

もしそうなら、私はurlManagerパターンに苦労しています

array('api/find', 'pattern'=>'api/<モデル:\w+>/names/<names:(|\w+)>/birthyears/<birthyears:(|\d{4})>/ signs/<signs:(|\w+)>/birthstates/<birthstates:(|\w+)>', '動詞'=>'GET')

上記のパスをこれに渡すと、期待される解像度が得られません。これに対処するより良い方法があると確信しています

4

1 に答える 1

0

ここでテストしたところ、うまくいきました。

urlManager のパラメータをどのように設定していますか?

urlFormat プロパティが「パス」に設定されていますか?

'urlManager' => array(
    'urlFormat' => 'path', // You have to leave it like that.
 //   'urlSuffix' => '.html',
    'showScriptName' => false,
    'caseSensitive' => true,
    'useStrictParsing' => true,
    'rules' => array(
       array('api/find', 'pattern'=>'<model:\w+>/names/<names:(|\w+)>/birthyears/<birthyears:(|\d{4})>/signs/<signs:(|\w+)>/birthstates/<birthstates:(|\w+)>', 'verb'=>'GET'),
       // Other rules here
    ),
),
于 2012-10-24T20:52:02.450 に答える