0

Lucarast RESTler の使用を検討しています (http://luracast.com/products/restler/)

私の PHP クラスには「solve」というメソッドがあり、POST 経由で引数を受け入れる必要があります

class Solver
{
  function solve( $request_data )
  {
    ...
  }

メソッドに単に「solve」という名前を付けると、POST 経由でアクセスできなくなります。私は404を取得します。

POST http://localhost/path/to/my/method 404 (Not Found)

どうやら、「postSolve」という名前にする必要があるようです。または、単に「solve」を呼び出す「postSolve」という別のメソッドを作成します。

public function postSolve( $request_data )
{
    return $this->solve( $request_data );
}

しかし、これを行うエレガントな方法があるに違いないと考えるのをやめることはできません。

メソッドを好きなように呼び出して、POST 経由でアクセスできるようにするにはどうすればよいですか?

4

2 に答える 2

2

自動ルーティングでは、API メソッド名の前にgetorpostまたはputordeleteを付けて、それぞれの HTTP メソッド/動詞にマップする必要があります

これについては、この例で詳しく説明します

ただし、api メソッドの上にある次の形式の PHPDoc コメントをいつでも使用して、任意のメソッドを POST にマップできます。

@url POST my/custom/url/:myvar

例えば

class CustomPost
{
    /**
     * @url POST custom/:id
     * @url GET custom
     */
    function anyName($id)
    {
        //do something
    }
}
于 2012-08-23T05:43:53.263 に答える
1

ここ数日で、REST についてもう少し学びました。get、post、put、delete 以外のメソッドは必要ないはずです。

この他の質問を参照してください: REST の理解: 動詞、エラー コード、および認証

「一般的に、より多くの動詞が必要だと考えるとき、それは実際にはリソースを再識別する必要があることを意味している可能性があります。REST では、常にリソース、またはリソースのコレクションに対して行動していることを思い出してください。リソースは、API 定義にとって非常に重要です。」

于 2012-04-26T22:04:56.757 に答える