0

複数のルートに問題があり、そのうちのいくつかは機能していません。

/**
 * 
 * @url GET /fetch
 * @url GET /fetch/lazyload/:lazy
 * @url GET /fetch/:id/
 * @url GET /fetch/:id/lazyload/:lazy
 * @url GET /fetch/start/:offset/limit/:limit
 * @url GET /fetch/start/:offset/limit/:limit/lazyload/:lazy
 * @url GET /fetch/start/:offset/limit/:limit/sort/:sort
 * @url GET /fetch/start/:offset/limit/:limit/sort/:sort/lazyload/:lazy
 * @url GET /fetch/start/:offset/limit/:limit/sort/:sort/orderby/:order
 * @url GET /fetch/start/:offset/limit/:limit/sort/:sort/orderby/:order/lazyload/:lazy
 */
protected function fetch($id = null, $offset = 0, $limit = 25, $lazy = false, $sort = 'asc', $order = null){
    //override
    throw new RestException(501);
}

たとえば

@url GET /fetch/start/:offset/limit/:limit

URLの場合は機能しません/fetch/start/1/limit/2 が、次の場合は機能します /fetch/start/1/2

そして /fetch/:id/オーバーライド します/fetch/lazyload/:lazy

動作しないため/fetch/lazyload/true、認識されたパターンが返されます /fetch:id => lazyload

何か足りないのですか、それともこの種のマッピングは不可能ですか?

ありがとうございました。

4

1 に答える 1

1

あいまいさがここでその役割を果たしています!もっと理解するためにこのスレッドを読んでください

要するに、URL のパラメーターは貪欲であるため、非貪欲な URL の後に来るようにする必要があります。

たとえば、2 つの URL について話しましょう

  1. simple\:param
  2. simple\name

上記と同じ順序で URL を保持して を呼び出すとsimple\name、マッピングされた api メソッドのみがsimple\:paramそれを受け取り、param を「name」として設定します。順序を次のように変更するだけで、これを修正できます。

  1. simple\name
  2. simple\:param

同様に、次のようにして API を修正できます

/**
 *
 * @url GET /fetch/start/:offset/limit/:limit/sort/:sort/orderby/:order/lazyload/:lazy
 * @url GET /fetch/start/:offset/limit/:limit/sort/:sort/orderby/:order
 * @url GET /fetch/start/:offset/limit/:limit/sort/:sort/lazyload/:lazy
 * @url GET /fetch/start/:offset/limit/:limit/sort/:sort
 * @url GET /fetch/start/:offset/limit/:limit/lazyload/:lazy
 * @url GET /fetch/start/:offset/limit/:limit
 * @url GET /fetch/lazyload/:lazy
 * @url GET /fetch/:id/lazyload/:lazy
 * @url GET /fetch/:id/
 * @url GET /fetch
 */
protected function fetch($id = null, $offset = 0, $limit = 25, $lazy = false, $sort = 'asc', $order = null)
{
    //override
    throw new RestException(501);
}

HTH

于 2012-09-26T15:35:53.390 に答える