ASP.NET Core 5.0 Web API 在尝试使用 HttpDelete 删除记录时抛出错误 405
ASP.NET Core 5.0 Web API throws error 405 when trying to delete record using HttpDelete
我正在构建一个 ASP.NET Core 5.0 Web API 应用程序,正如我在标题中提到的 我在尝试从数据库中删除记录时遇到问题;我收到来自 HttpDelete
请求的错误 405 Method Not Allowed
响应。
PS:我添加了 services.AddCors()
和 app.UseCors()
默认策略。
这是删除方法代码
public bool deleteLivreById(int id)
{
Livre l = _db.Livres.Find(id);
_db.Livres.Remove(l);
_db.SaveChanges();
return true;
}
这是控制器内部的HttpDelete
方法
[HttpDelete("{id}/delete")]
public bool deleteLivreById(int id)
{
return _objGererLivre.deleteLivreById(id);
}
最后这是导航到 HttpDelete
时来自控制台的图片 Url
编辑:这是我的控制器的完整代码
namespace GestionLivre.Controllers
{
[ApiController]
[Route("test")]
public class LivreController : Controller
{
private IGererLivre _objGererLivre;
public LivreController(IGererLivre gererLivre)
{
_objGererLivre = gererLivre;
}
[HttpGet]
public JsonResult getLivres()
{
return Json(_objGererLivre.getLivres());
}
[HttpDelete("{id}/delete")]
public bool deleteLivreById(int id)
{
return _objGererLivre.deleteLivreById(id);
}
}
}
我打开屏幕截图,注意到您选择 'GET' 作为 http 动词,方法类型是 'Delete'。能否请您更改并尝试。
据我了解,默认情况下,当您尝试在浏览器中访问 URL 时,它使用 GET 方法。所以我们应该传入 header 适当的方法(POST,GET,DELETE,PATCH,PUT) 如果你想测试 HTTP 方法我会推荐你使用 Postman 或 Swagger。 Postman 比 Swagger 更容易使用,您应该将其添加到服务配置和中间件中。
邮递员的例子:
同时推荐您使用 REST 最佳实践。并正确命名资源。 https://restfulapi.net/resource-naming/#:~:text=2.-,Best%20Practices,-2.1.%20Use%20nouns
我正在构建一个 ASP.NET Core 5.0 Web API 应用程序,正如我在标题中提到的 我在尝试从数据库中删除记录时遇到问题;我收到来自 HttpDelete
请求的错误 405 Method Not Allowed
响应。
PS:我添加了 services.AddCors()
和 app.UseCors()
默认策略。
这是删除方法代码
public bool deleteLivreById(int id)
{
Livre l = _db.Livres.Find(id);
_db.Livres.Remove(l);
_db.SaveChanges();
return true;
}
这是控制器内部的HttpDelete
方法
[HttpDelete("{id}/delete")]
public bool deleteLivreById(int id)
{
return _objGererLivre.deleteLivreById(id);
}
最后这是导航到 HttpDelete
时来自控制台的图片 Url
编辑:这是我的控制器的完整代码
namespace GestionLivre.Controllers
{
[ApiController]
[Route("test")]
public class LivreController : Controller
{
private IGererLivre _objGererLivre;
public LivreController(IGererLivre gererLivre)
{
_objGererLivre = gererLivre;
}
[HttpGet]
public JsonResult getLivres()
{
return Json(_objGererLivre.getLivres());
}
[HttpDelete("{id}/delete")]
public bool deleteLivreById(int id)
{
return _objGererLivre.deleteLivreById(id);
}
}
}
我打开屏幕截图,注意到您选择 'GET' 作为 http 动词,方法类型是 'Delete'。能否请您更改并尝试。
据我了解,默认情况下,当您尝试在浏览器中访问 URL 时,它使用 GET 方法。所以我们应该传入 header 适当的方法(POST,GET,DELETE,PATCH,PUT) 如果你想测试 HTTP 方法我会推荐你使用 Postman 或 Swagger。 Postman 比 Swagger 更容易使用,您应该将其添加到服务配置和中间件中。
邮递员的例子:
同时推荐您使用 REST 最佳实践。并正确命名资源。 https://restfulapi.net/resource-naming/#:~:text=2.-,Best%20Practices,-2.1.%20Use%20nouns