私は REST API に取り組んでおり、コンテンツ ネゴシエーションを使用して送信する表現を決定するというアイデアが本当に気に入っています。私のアプリケーションは Flask フレームワークに基づいているため、当然 mimerender パッケージを使用しています。HTML、JSON、および XML で機能するリソース バリアントの選択があります。しかし、その後、application/foobar のような偽の MIME タイプで試してみました。406 エラー コードが表示されることを期待していましたが、代わりに 200 応答コードと XML 表現が表示されました。
ソース コードを見ると、mimerender のデフォルトは、mimetype のリストの最初にある mimetype (現時点では XML) に設定されているようです。
私の質問は2つの部分です:
mimerender を書いた人 (彼がこの質問を読んでくれることを願っています) は、自分が何をしているのかを知っており、正当な理由で 406 エラー コードではなく、デフォルトの表現を意図的に提供することを選択したに違いありません。クライアントが求めているものを持っていないことをクライアントに伝えるのではなく、何らかの (ランダムな) 表現を送信する理由は何ですか?
頑固にデフォルト表現を送信したくなく、代わりに 406 エラーを送信することを好むと仮定すると、Flask と mimerender の範囲内でこれを行うにはどうすればよいでしょうか? 考えられる 1 つの可能性は、偽の MIME タイプを登録し、それをデフォルトとして設定し、そのハンドラーで abort(406) を呼び出すことです。しかし、それはハッキーに思えます。