Sembra che ASP.NET interpreti implicitamente il metodo denominato GetX
e PostX
come metodi GET e POST rispettivamente, poiché i loro nomi sono preceduti dai nomi dei metodi HTTP. Questo vale anche per PUT e DELETE.Come arrestare l'API Web ASP.NET dall'interpretazione implicita del metodo HTTP?
Ho un metodo sfortunatamente chiamato Delete
ma voglio che venga interpretato come un POST, quindi specifichi esplicitamente che si tratta di un POST che utilizza l'attributo [HttpPost]
. Questo funziona, a patto che non è dichiarata all'interno di un'interfaccia ...
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].
}
}
Come posso ovviare a questo, senza dover specificare il HttpPostAttribute per ogni implementazione?
Utilizzerai il routing di attributo con questo web API? – Nkosi
Mi sembra che i verbi http siano dettagli di implementazione e non appartengano all'interfaccia. –
@BigDaddy, direi che fanno parte della firma del metodo API. –