我使用自定義過濾器來驗證內容類型,如:ASP .Net網絡API定製過濾器和HTTP動詞
public override void OnActionExecuting(HttpActionContext httpActionContext)
{
List<String> errors = new List<String>();
// a
if (httpActionContext.Request.Content.Headers.ContentType.MediaType == "application/json")
{
}
else
{
errors.Add("Invalid content type.");
}
// more checks
}
上面的代碼工作正常,但驗證應該檢查請求的HTTP動詞,因爲它應該驗證內容類型僅用於put或post。我不想從httpget動作中刪除自定義過濾器,因爲我在裏面有更多的檢查,我不想將過濾器分成兩部分,這意味着我必須檢查過濾器中的http動詞,但我可以不知道如何。
任何提示?
你爲什麼試圖限制數據的媒體表示?開箱即用支持XML和JSON,並且媒體處理程序會將您的表示轉換爲強類型對象。您可能會更好地使API與其接受的媒體類型進行通信,並在必要時返回錯誤請求錯誤。 – Oppositional 2012-08-14 15:12:14
因爲我們只支持json(文檔,版本控制等)。 – user1330271 2012-08-14 15:19:51
我想這取決於你,但是支持多種媒體類型並讓web API處理對象轉換格式的能力不是我輕易放棄的。 – Oppositional 2012-08-14 16:02:33