无法让 HTTP PUT 请求在 ASP.NET Core 中工作

2024-01-21

我正在尝试更新中的条目game桌子。但是,我在 ASP.NET 中的 PUT 请求似乎从未触发,我不明白为什么。

这是 ASP.NET 中的控制器:

[Route("game/{update.GameID}")]
[HttpPut]
public IActionResult updateGame([FromBody]Game update)
{
    var result = context.Games.SingleOrDefault(g => g.GameID == update.GameID);
    if (result != null)
    {
        result = update;
        context.SaveChanges();
    }
    return Created("", result);
}

这是我在 Angular 中使用的代码:

url:string;
constructor(private _http: HttpClient) {
    this.url = "https://localhost:44359/api/v1/"
};

putGame(id:number, game:Game){
    return this._http.put(this.url + "game/" + id, game);
}

编辑 1:我确实有一个 GET 请求列表,它们都工作得很好。只有 PUT 请求失败。


如果您正在使用PUT请求您需要添加资源 ID 来更新或创建新资源 - 所以不要将您的 ID 与您的对象结合起来

[HttpPut("game/{id}")]
public IActionResult UpdateGame(int id, [FromBody]Game update) {
    //...
}

如果您正在使用ASP.NET核心您可以像上面的代码一样在 HTTP 动词属性上重写您的 URL - 因此在 URL 中传递您的资源 id 并在正文中绑定您的对象 - 您的 URL 应读取为https://localhost:44359/api/v1/game/2

希望这对您有帮助 - 编码愉快!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让 HTTP PUT 请求在 ASP.NET Core 中工作 的相关文章

随机推荐