La ressource demandée n'a pas en charge la méthode HTTP GET
Quand je lance cette url: /api/users/1
il n'seule carte à la Suppression de l'action lorsque j'utilise le HttpDelete-Attribut. Quelle est la raison de ce comportement?
D'autre je reçois son message: La ressource demandée n'a pas en charge la méthode HTTP GET
[RoutePrefix("api/users")]
public class UserController : ApiController
{
private readonly IUserService _userService;
public UserController(IUserService userService)
{
_userService = userService;
}
[Route("")]
public HttpResponseMessage Get()
{
return Request.CreateResponse<IEnumerable<UserDTO>>(HttpStatusCode.OK, _userService.GetUsers());
}
[Route("{id:int}")]
[HttpDelete]
public HttpResponseMessage Delete(int id)
{
_userService.Delete(id);
return Request.CreateResponse(HttpStatusCode.OK, "User was deleted successfully");
}
}
Ce sont mes routes:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { controller = "Home", action = "Start", id = RouteParameter.Optional }
);
Vous devez vous connecter pour publier un commentaire.
Par convention, les verbes HTTP correspondra à un nom d'action qui est préfixé par ce verbe HTTP.
Donc, c'est de se plaindre que vous n'avez pas une action pour un HTTP GET, qui est le verbe utilisé lorsque vous faites une simple demande avec votre navigateur. Vous avez besoin d'une action nommé quelque chose comme:
ou même
Évidemment, si vous faites une demande de SUPPRESSION, il correspond à la Suppression de l'action que vous avez défini.
Ref: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api
"Pour trouver de l'action, de l'API Web ressemble à la méthode HTTP, et puis regarde pour une action dont le nom commence par cette méthode HTTP nom. Par exemple, avec une requête GET, Web API ressemble à une action qui commence par "Get...", comme "GetContact" ou "GetAllContacts". La présente convention ne s'applique qu'à GET, POST, PUT et DELETE méthodes. Vous pouvez permettre à d'autres méthodes HTTP à l'aide d'attributs de votre contrôleur. Nous allons voir un exemple de cela plus tard."
public HttpResponseMessage Get(int id)