6

コントローラのメソッドを指定すると、次のようになります。

public class CustomerController : ApiController
{
    [HttpGet]
    public CustomerDto GetById([FromUri] int id)
    {
        .
        .
        return customerDto
    }
}

サポートされているメディアタイプを属性で指定する方法はありますか?たとえば、CustomerDtoは複雑なクラスであり、XML(application / xml)ではなくJSON(application / json)でのみシリアル化されますが、PDF(application / pdf)も受け入れることができます。このようなものはありますか?

[HttpGet(Accepts.JSON, Accepts.PDF)]  
    or
[HttpGet][AcceptJSON][AcceptXML]
    or
[HttpGet][Accept("application/json")][Accept("application/pdf")]

着信要求がサポートされていない場合、サポートされていない例外/ステータスが返される可能性があります。

注-グローバルに実行できるように、XMLシリアル化をまとめて削除したくありません。代わりに、ルートごとに何が受け入れられるかを定義したいと思います。

使用-ASP.NETWebAPIRC 1(アップグレードが必要)+セルフホスティング

4

1 に答える 1

5

カスタムActionFilterAttributeがうまくいくように聞こえます。

System.Web.Http.Filters.ActionFilterAttributeから継承する新しいクラスを作成し、OnActionExecutingメソッドをオーバーライドします。このメソッド内で、リクエストのヘッダーを確認し、サポートしたくないものを探して、適切な応答を返すことができます。

カスタムActionFilterAttributeのコンストラクターは、処理する「受け入れる」タイプと拒否するタイプの詳細を取得できます。

カスタムActionFilterAttributeの例については、この投稿を確認してください。

于 2012-11-16T19:24:32.453 に答える