2017-06-30 179 views
-1

我使用WebAPI2编写REST服务发布请求WebAPI2

我需要将书籍添加到数据库。

我有这样的代码型号:

public class Book 
{ 
public int Id { get; set; } 
public string Name { get; set; } 
public string Author { get; set; } 
public int Year { get; set; } 

} 

和控制器:

[HttpPost] 
    public void CreateBook([FromBody]Book book) 
    { 
     db.Books.Add(book); 
     db.SaveChanges(); 
    } 

我尝试从邮递员

enter image description here

发送POST请求,但我有这样的错误

“Message”:“此资源不支持请求实体的媒体类型'multipart/form-data'。”, “ExceptionMessage”:“没有MediaTypeFormatter可用于从'Book'类型的对象读取媒体类型为'multipart/form-data'的内容。“

我该怎么处理它?

回答

1

你必须格式化添加到HttpConfiguration对象,如果这是一个ASP.NET MVC项目,你会发现它在WebApiConfig.cs类的注册方法

public class WebApiConfig 
    { 
     public static void Register(HttpConfiguration config) 
     { 
      //Routes 
      config.Routes.MapHttpRoute(/// your routes); 

      //Formatters 
      config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json")); 

     } 
    } 
+0

谢谢。 它有帮助 – Logan

+2

默认情况下,Web API支持'application/json'。您不需要手动将其添加到受支持的媒体类型。 –

4

您收到此下错误,因为与请求一起发送的Content-Type标头是multipart/form-data而不是application/json。发生这种情况的原因是,您选择了Postman中的“表单数据”单选按钮,无论您是否手动输入标题,该选项都会自动将Content-Type设置为multipart/form-data。 (这涵盖了in the documentation - 请参阅“请求正文”部分约2/3下页的“关于标题的注意事项”。)尝试选择“原始”,并确保已添加一个带有值的Content-Type标题application/json。然后,在正文部分添加您的JSON。

{ 
    "Id": 1234, 
    "Name": "A Book About Nothing", 
    "Author": "Joe Schmoe", 
    "Year": 1993 
} 
+1

这应该是答案。 –