WebApi方法没有得到发布的数据.缺少了什么?

WebApi method is not getting posted data. What is missing?

本文关键字:数据 什么 方法 WebApi      更新时间:2023-09-26

我正在尝试使用ASP实现臭名昭著的Todo应用程序。. NET WebApi 2.

Todo模型:

public class Todo
{
    public int Id { get; set; }
    public string Title { get; set; }
}
WebApi Post:

public void Post([FromBody]Todo todo)
 {   
     // code to handle post.
 }

Javascript click

$("#add").click(function(e) {               
      var todo = {
      "Id": 20000,
      "Title": "Hello world"                    
   };
   $.post( "http://localhost:51386/api/todo", JSON.stringify(todo))
      .done(function( data ) {
        alert( "Data Loaded: " + data );
   });              
});

我的HTTP请求体看起来像这样:

{"Id":20000,"Title":"Hello world"}

使用默认路由。

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

当我调试Post方法时,它总是空的。我到底错过了什么?

根据您的示例代码,我所能想到的是您没有在配置中包含JSON Formatter。它应该是这样的:

    System.Web.Http.GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
    config.Formatters.Insert(0, new System.Net.Http.Formatting.JsonMediaTypeFormatter());

Content-Type=application/json只有在你设置了合适的格式化器后才会起作用。