首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么在web api HttpPost方法中使用[FromBody]属性时会得到405Unsopported媒体类型?

在Web API中,使用[FromBody]属性时得到405 Unsupported Media Type错误的原因是请求的Content-Type与服务器端接受的媒体类型不匹配。[FromBody]属性用于从请求的正文中获取数据,并将其绑定到方法参数上。

当使用[FromBody]属性时,Web API默认要求请求的Content-Type为"application/json",即请求的正文数据格式为JSON。如果请求的Content-Type与服务器端接受的媒体类型不匹配,就会导致405 Unsupported Media Type错误。

解决该问题的方法是确保请求的Content-Type与服务器端接受的媒体类型一致。可以通过以下几种方式解决:

  1. 在发送请求时,确保设置正确的Content-Type头部。例如,如果使用Postman发送请求,可以在Headers选项卡中设置Content-Type为"application/json"。
  2. 在Web API的方法上使用[Consumes]属性指定接受的媒体类型。例如,可以在方法上添加[Consumes("application/json")],表示只接受Content-Type为"application/json"的请求。
  3. 如果需要接受其他类型的请求,可以在方法上使用[Consumes]属性指定多个接受的媒体类型。例如,可以在方法上添加[Consumes("application/json", "application/xml")],表示接受Content-Type为"application/json"或"application/xml"的请求。
  4. 如果需要接受任意类型的请求,可以在方法上使用[Consumes]属性指定通配符""。例如,可以在方法上添加[Consumes("/*")],表示接受任意类型的请求。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云API网关:https://cloud.tencent.com/product/apigateway
  • 腾讯云云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云云数据库MySQL版:https://cloud.tencent.com/product/cdb_mysql
  • 腾讯云对象存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云人工智能:https://cloud.tencent.com/product/ai
  • 腾讯云物联网平台:https://cloud.tencent.com/product/iotexplorer
  • 腾讯云移动推送:https://cloud.tencent.com/product/tpns
  • 腾讯云区块链服务:https://cloud.tencent.com/product/tbaas
  • 腾讯云游戏多媒体引擎:https://cloud.tencent.com/product/gme
  • 腾讯云音视频处理:https://cloud.tencent.com/product/mps
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#进阶系列——WebApi 接口参数不再困惑:传参详解上

前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料。如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路。...至于还有园友们提到http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api...这也就是为什么很多人在园子里面问道为什么方法名不加[HttpGet]就调用不到的原因!...通过dynamic动态类型能顺利得到多个参数,省掉了[FromBody]这个累赘,并且ajax参数的传递不用使用"无厘头"的{"":"value"}这种写法,有没有一种小清新的感觉~~有一点需要注意的是这里...原理解释:使用实体作为参数的时候,前端直接传递普通json,后台直接使用对应的类型去接收即可,不用FromBody

4K80

小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

Microsoft.AspNetCore.Mvc 命名空间提供很多用于配置Web API 控制器的行为和操作方法属性: 特性 说明 [Route] 指定控制器或操作的 URL 模式。...即是不应该对 int、string 等类型使用 [FromBody] ,而应该使用一个 复杂类型。 而且,一个 action ,应该只能使用一个 [FromBody] 。...view=aspnetcore-2.2 三. action 特性方法 Microsoft.AspNetCore.Mvc 命名空间提供可用于配置 Web API 控制器的行为和操作方法属性。...[HttpGet] 标识支持 HTTP GET 方法的操作。 ... ... 下面使用这些属性来指定 Controller 或 Action 接受的 HTTP 方法、返回的数据类型或状态代码。...1, [Route] 微软文档,把这个特性称为 属性路由 ,定义:属性路由使用一组属性将操作直接映射到路由模板。

5.5K00

.NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

模型绑定系统: 从各种源(如路由数据、表单域和查询字符串)检索数据。 Razor方法参数和公共属性向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型属性。...[Range]:验证属性值是否指定的范围内。 [RegularExpression]:验证属性值是否与指定的正则表达式匹配。 [Required]:验证字段是否不为 null。...[StringLength]:验证字符串属性值是否不超过指定长度限制。 [Url]:验证属性是否具有 URL 格式。 [Remote]:通过服务器上调用操作方法来验证客户端上的输入。...格式化响应数据 返回数据类型 ASP.NET Core Web API 控制器操作的返回类型:https://docs.microsoft.com/zh-cn/aspnet/core/web-api...API 响应数据的格式:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/advanced/formatting?

2.4K10

.NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

模型绑定系统: 从各种源(如路由数据、表单域和查询字符串)检索数据。 Razor方法参数和公共属性向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型属性。...[Range]:验证属性值是否指定的范围内。 [RegularExpression]:验证属性值是否与指定的正则表达式匹配。 [Required]:验证字段是否不为 null。...[StringLength]:验证字符串属性值是否不超过指定长度限制。 [Url]:验证属性是否具有 URL 格式。 [Remote]:通过服务器上调用操作方法来验证客户端上的输入。...格式化响应数据 返回数据类型 ASP.NET Core Web API 控制器操作的返回类型:https://docs.microsoft.com/zh-cn/aspnet/core/web-api...API 响应数据的格式:https://docs.microsoft.com/zh-cn/aspnet/core/web-api/advanced/formatting?

2.5K11

ASP.NET Web API编程——模型验证与绑定

这里从URI获取值具体指:从路由词典获取值或者从URI的查询字符串获取值。具体过程见介绍路由那篇博文。 2)对于复杂类型Web API使用媒体格式化器从消息体获得值。...这样即使操作(Action)参数是复杂类型,框架也会中URI取值来为参数赋值。 使用[FromBody] 为了强制Web API从消息体取值,可以使用FromBody特性。...这样即使操作(Action)参数是简单类型,框架也会从消息体取值来为参数赋值。当使用FromBody特性时,Web API使用请求的Content-Type标头来选择格式化器。...3)如果没有找到就使用默认规则。 如果操作(Action)参数是简单类型Web API框架会从URI获取值。...这里从URI获取值具体指:从路由词典获取值或者从URI的查询字符串获取值。具体过程见介绍路由那篇博文。对于复杂类型Web API使用媒体格式化器从消息体获得值。

2.9K50

Oh my God, Swagger API文档竟然可以这样写?

以一个最简单的Post请求为例,细数这最基础Swagger文档的弊病: [HttpPost] public async Task AddHotmapAsync([FromBody] CreateHotmapInput...没有约定请求的媒体类型,前端会不会给你另外一个surprise? API 文档没有指示响应的媒体类型,前端以哪种姿势接收? API文档没有指示响应的预期输出内容、状态码,前端会不会抓狂? ?...=null; } 通过给API添加XML注释:remarks “注意如果注释内容包含代码,可以使用Markdown的代码语法```,注释里面优雅显示代码。...通过Consumes,Produces特性指示action接收和返回的数据类型,也就是媒体类型。...以上就是小码甲总结的书写Swagger文档的优雅姿势: 编写API 传值example 约束请求/响应 支持的媒体类型 指示API的预期输出内容、预期状态码 内容自述,格式工整,前端同事再也不会追着你撕逼了

54420

【ASP.NET Core 基础知识】--Web API--创建和配置Web API(一)

Web API现代软件开发是不可或缺的组成部分,它们促使了系统的模块化、可扩展性和互操作性,为开发人员提供了强大的工具来构建各种类型的应用程序。...三、配置路由和控制器 3.1 理解路由的基本概念 Web API,路由是决定如何将HTTP请求映射到控制器和操作方法的过程。理解Web API路由的基本概念对于构建和设计API端点是至关重要的。...属性路由(Attribute Routing): ASP.NET Core允许使用属性路由控制器和操作方法上直接定义路由模板。...路由中间件HTTP请求到达控制器之前,负责解析URI并确定要执行的控制器和操作方法。 3.2 创建控制器类 .NET 6使用命令行工具可以很方便地创建Web API控制器类。...这样,你就创建了一个简单的数据模型,并可以选择性地将其映射到数据库Web API使用这个数据模型,可以控制器操作它,例如获取、创建、更新和删除数据。

22100

从头编写 asp.net core 2.0 web api 基础框架 (2)

Github源码地址是: https://github.com/solenovex/Building-asp.net-core-2-web-api-starter-template-from-scratch...[FromBody] , 请求的body里面包含着方法需要的实体数据, 方法需要把这个数据Deserialize成ProductCreation, [FromBody]就是干这些活的....传递进来的model类型是 ProductCreation, 而我们最终操作的类型是Product, 所以需要进行一个Map操作, 目前还是挨个属性写代码进行Map吧, 以后会改成Automapper....Validation 验证 针对上面的Post方法,  如果请求没有Body, 参数product就会是null, 这个我们已经判断了; 如果body里面的数据所包含的属性product不存在, 那么这个属性就会被忽略...Controller里面添加验证逻辑:      [HttpPost] public IActionResult Post([FromBody] ProductCreation product

1.6K80

使用两种方法让 ASP.NET Core 实现遵循 HATEOAS 结构的 RESTful API

HATEOAS的优点有: 具有可进化性并且能自我描述 超媒体(Hypermedia, 例如超链接)驱动如何消费和使用API, 它告诉客户端如何使用API, 如何与API交互, 例如: 如何删除资源, 更新资源...Roy Fielding的一句名言: "如果在部署的时候客户端把它们的控件都嵌入到了设计, 那么它们就无法获得可进化性, 控件必须可以实时的被发现. 这就是超媒体能做到的." ????...为了让ASP.NET Core Web API 支持HATEOAS, 得需要自己手动编写代码实现....第一种方案 -- 静态类型方案 首先需要准备一个asp.net core 2.0 web api的项目. 项目搭建的过程就不介绍了, 我的很多文章里都有介绍....假设客户通过API得到一个Vehicle的时候, 它可能会需要得到修改(整体修改和部分修改)这个Vehicle的链接以及删除这个Vehicle的链接.

2.4K110

使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API

HATEOAS的优点有: 具有可进化性并且能自我描述 超媒体(Hypermedia, 例如超链接)驱动如何消费和使用API, 它告诉客户端如何使用API, 如何与API交互, 例如: 如何删除资源, 更新资源...Roy Fielding的一句名言: "如果在部署的时候客户端把它们的控件都嵌入到了设计, 那么它们就无法获得可进化性, 控件必须可以实时的被发现. 这就是超媒体能做到的." ????...为了让ASP.NET Core Web API 支持HATEOAS, 得需要自己手动编写代码实现....这一篇文章介绍如何实施第一种方案 -- 静态类型方案 首先需要准备一个asp.net core 2.0 web api的项目. 项目搭建的过程就不介绍了, 我的很多文章里都有介绍....假设客户通过API得到一个Vehicle的时候, 它可能会需要得到修改(整体修改和部分修改)这个Vehicle的链接以及删除这个Vehicle的链接.

1.1K50

从 MVC 到使用 ASP.NET Core 6.0 的Minimal API

定义路由和处理程序 MVC MVC ,我们有两种[2]定义路由的方法,一种是通过约定,一种是使用属性。 基于约定的路由更常用于网站而不是 API,并包含在mvc模板。...MVC MVC ,您可以将 JSON 从请求正文绑定到 .NET 类型方法是将其作为参数传递给您的操作方法使用[FromBody]属性对其进行修饰: [HttpPost("/payments"...)] public IActionResult Post([FromBody]PaymentRequest request) { } 或者,通过使用[ApiController]属性装饰您的控制器,将应用一个约定来绑定主体的任何复杂类型...request) { } MinimalAPI Minimal API 的模型绑定非常相似;您使用您希望从请求绑定的类型配置您的处理程序委托。...MVC MVC 应用程序使用[Authorize]属性装饰您的控制器和/或操作以指定您的授权要求。此属性允许您指定角色和策略。

7.5K10

Asp.Net Web API 2第十六课——Parameter Binding in ASP.NET Web API(参数绑定)

Web API一个控制器调用一个方法的时候,它必须为参数设定值,这个过程就叫做绑定。这篇文章描述Web API如何绑定参数,以及如何自定义绑定过程。   ...默认情况,Web API使用如下规则来绑定参数:   1、如果参数一个"简单"类型,那么Web API试图从URI获取值。...API试图从请求的URI获取参数值,这个“item”参数是一个复杂类型,因此Web API试图使用一个媒体格式化器从请求消息体来读取参数值。...媒体格式化器被设计就是为了这个目的。 Using [FromUri]  为了更好的让Web API从URI读取复杂类型,添加【FormUri】属性到参数上。...添加【FromBody属性到参数上: public HttpResponseMessage Post([FromBody] string name) { ... } 在这个例子Web API使用媒体格式化器来读取消息体

1.4K30

ASP.NET WebAPI String 传值问题

return str; } 就是这样一个简单的函数,有一个字符串类型的参数, 当我们用PostMan对该API进行测试,给api接口传一个Key为str,value为123的键值对...很奇怪,我们的给该方法指定了HttpPost方法,也指定了参数名为str的参数,请求的方法是post方法,参数也是str,却匹配不到该函数。 1.第一步。...2.第二步 查阅相关资料后,得出结论,原来当方法只有一个string类型的参数时,不能给该键值对赋予key值,也就是说key必须得空着。 如下所示。 ?...填加post的重载方法,如下:   [HttpPost]   public string Post([FromBody]string str1, [FromBody]string str2)  {   ...5.第五步 其实还有更简单暴力的办法,路由中通过url给参数指定值。

1.5K60
领券