2

REST コントローラー アクションに適切な応答ヘッダーを設定するコントローラー ヘルパーを作成しています。これは以下に貼り付けられており、Zend Framework に慣れていない人でも、私が何をしているのかを理解できるように十分に単純化されているはずです。

私の質問は次のとおりです:これらのコードはそれぞれの応答に対して正しいですか?「アクセスが拒否された」場合は、401 または 403 を使用しますか?

また、エラーで応答する場合、レスポンスボディにメッセージを入れるべきなのは理解していますが、「Content-Type」を「text/plain」に設定する必要がありますか?

<?php

class App_Controller_Helper_RestResponse extends Zend_Controller_Action_Helper_Abstract
{
    public function denied()
    {
        // 403 or 401?
    }

    public function notFound()
    {
        // 404
    }

    public function created()
    {
        // 201
    }

    public function deleted()
    {
        // 204
    }


    public function redirect()
    {
        // 301
        // new url
    }

    public function malformed()
    {
        // 400
    }

    public function gone()
    {
        // 410
    }


}
4

1 に答える 1

0

これらは私にはかなり良さそうに見えます。削除には 200 を使用する傾向がありますが、削除を処理するときにエンティティを返送しない場合は、204 を使用しても問題はないと思います。401 対 403 に関しては、名前が悪いため注意が必要です。401 は「認証されていません」と言いますが、WWW-Authenticate ヘッダーを送信する必要があることから、リクエストが「認証されていない」場合に実際に使用する必要があることがわかります。401 は次のように言います: 「私はあなたについて十分に知っていることに満足していないので、あなたにそれをさせることはできません。一方、403 は、リソースが「禁止されている」ことを伝えます。 403 は、次のように表現する必要がある場合に使用します。

リダイレクトを行う理由によっては、追加のリダイレクトとして 302、303、および 307 を検討することをお勧めします。http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlをさらに見て、リダイレクト ヘッダーについてさらに詳しい情報が必要な場合はお知らせください。

于 2010-05-12T01:35:07.130 に答える