看起來,ASP.NET隱式地將名爲GetX
和PostX
的方法分別解釋爲GET和POST方法,因爲它們的名稱前綴爲HTTP方法名稱。 PUT和DELETE也是這種情況。如何停止ASP.NET Web API隱式解釋HTTP方法?
我有一個不幸名爲Delete
的方法,但我希望它被解釋爲POST,所以我明確指定它是使用[HttpPost]
屬性的POST。這工作,只要它不是一個接口中聲明...
public interface IFooBarController
{
[HttpPost]
void DoSomething();
[HttpPost]
void Delete(int id);
}
public class FooBarController : IFooBarController
{
public void DoSomething()
{
// This API method can only be called using POST,
// as you would expect from the interface.
}
public void Delete(int id)
{
// This API method can only be called using DELETE,
// even though the interface specifies [HttpPost].
}
}
我怎樣才能解決這個問題,而無需指定HttpPostAttribute每個實現的?
你會在這個web api上使用Attribute routing嗎? – Nkosi
在我看來,http動詞是實現細節,不屬於一個接口。 –
@BigDaddy,我會說他們是API方法簽名的一部分。 –