2017-12-20 8 views
0

モデルバインダーをASP.Net CoreのHTTP要求の本文部分に正しくバインドさせるには、[FromBody]属性を使用する必要があります。ASP.Netコアベンダー固有のMIMEタイプHTTP POST

public JsonResult PostContent([FromBody] Content content) 
{ 
    ...... 
} 

メディアタイプがapplication/jsonの場合、これは効果的です。ただし、Acceptヘッダーにベンダー固有の(たとえば)メディアタイプを使用する場合は、HTTP POSTでそれを渡すと415 Unsupported Media Typeが返されます。

私の質問はです。どのようにASP.Netコアのベンダー固有のメディアタイプをサポートしていますか?

+1

は、カスタムフォーマッタを確認してください。 https://docs.microsoft.com/en-us/aspnet/core/mvc/advanced/custom-formatters – Nkosi

答えて

0

これが私のやり方です。ドキュメントで述べたようにStartup.cs

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddTransient<IApiInfoService, ApiInfoService>(); 
    services.AddTransient<IApiVersion, ApiVersion>(); 
    services.AddTransient<IContentService, ContentService>(); 
    services.AddTransient<IIdGenerator, GuidIdGenerator>(); 

    // Add framework services. 
    services.AddMvc(
     mvcConfig => { 
      mvcConfig.InputFormatters.OfType<JsonInputFormatter>().First().SupportedMediaTypes.Add(
       MediaTypeHeaderValue.Parse(ContentTypes.VENDOR_MIME_TYPE) 
      ); 
     } 
    ); 
}