2016-07-16 1 views
3

私は最近Web APIについて学び、MVCアプリケーションのスケーラビリティを高める計画を​​立てています。私は最終的にWeb APIコントローラを作成したが、コントローラークラスに適用された[Produces("application/json")]注釈を発見した。私はその注釈が何をしているのか把握できませんでした。コントローラーがjson入力のみを受け入れるようにしたいので、このタグは私にとって役に立ちますか?データアノテートを生成

答えて

5

ProducesAnnotationはレスポンスの書式設定にのみ関係します。これは入力を制限する必要がある場合には役に立ちません。

ASP.NETコアMVCフレームワークのProducesAnnotationを使用して、コンテンツのネゴシエーションプロセスを特定の種類のコントローラアクションまたは特定のアクションに誘導できます。あなたができる特定の アクションに対する応答の形式を制限したい場合は、[作成し]フィルタを適用することができます

:ドキュメント(https://docs.asp.net/en/latest/mvc/models/formatting.html)から 。

あなたはあなたのStartup.csタイプJsonInputFormatterの唯一のInputFormatterを持つように起動時にMVCを設定することができ、グローバルレベルでのJSONに入力を制限したい場合。

[コントローラ]または[アクション]レベルで[生産]の対応部分は、[消費]注釈です。

[Consumes("application/json")] 
public class MyController : Controller 
{ 
    public IActionResult MyAction([FromBody] CallModel model) 
    { 
     .... 
    } 
} 

このコントローラの呼び出しは、クライアントがapplication/jsonのContent-Typeヘッダを提供する場合にのみ成功します。それ以外の場合は、415(サポートされていないメディアタイプ)が返されます。

これが役に立ちます。

+0

この設定を1台のコントローラに適用することは可能でしょうか? –

+0

私はConsumesAttributeに関する新しい情報を追加しました。これがあなたの要求を満たすことを願っています。 –

+0

する必要があります。ありがとうございました –

関連する問題