2017-06-30 226 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

這應該是答案。 –