我使用WebAPI2编写REST服务
我需要将书添加到db。
我有这个代码模型:
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();
}
我尝试从邮递员发送POST请求
但我有这个错误
“消息”:“此资源不支持请求实体的媒体类型'multipart / form-data'。”, “ExceptionMessage”:“没有MediaTypeFormatter可用于从媒体类型为'multipart / form-data'的内容中读取'Book'类型的对象。”
我怎么能忍受它?
答案 0 :(得分:4)
您收到此错误的原因是与请求一起发送的Content-Type
标头是multipart/form-data
而不是application/json
。之所以发生这种情况,是因为您在Postman中选择了“表单数据”单选按钮,无论您是否手动输入标题,它都会自动将Content-Type
设置为multipart/form-data
。 (已涵盖in the documentation - 请参阅“请求正文”部分中的“关于标题的注释”,大约是页面下方的2/3。)请尝试选择“原始”,并确保添加了{ {1}}标头,其值为Content-Type
。然后,在Body部分添加您的JSON。
application/json
答案 1 :(得分:1)
您必须向HttpConfiguration对象添加格式化程序,如果这是一个ASP.NET MVC项目,您将在Register方法下的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"));
}
}