gpt4 book ai didi

Angular Http PUT 不向 Web-API 发送请求

转载 作者:行者123 更新时间:2023-12-02 03:34:08 27 4
gpt4 key购买 nike

我有一个使用 Entity Framework 的 c# WEB API - 我正在尝试通过我的 Angular 前端发出放置请求以模拟“ checkin ”功能,但请求没有通过。

这是我的 Web api 方法

   [HttpPut("checkin/{id}")]
[AuthorizeRoles(Role.Administrator, Role.User)]
public async Task<IActionResult> CheckIn(int id)
{
var reservation = await context.Reservations.FindAsync(id);
var username = User.Identity.Name;

if (reservation == null)
return NotFound();

// Ensure user is checking-in their own reservation and its not already checked-in
if (reservation.UserName == username && reservation.CheckInDate == null)
{
reservation.CheckInDate = DateTime.Now;

var count = await context.SaveChangesAsync();

if (count < 1)
return StatusCode((int)HttpStatusCode.InternalServerError);
}

return Ok();
}

这是我发起请求的两个 .ts 文件-注意:在第二种方法中,我决定手动传递 ID 以进行测试

-checkIn(id: number){
if (confirm('Would you like to check in')) {
this.reservationService.checki(7);
};
}

reservationservice.ts

 checki(id: number) {
const headers = new Headers();
const url = `${this.url}+/checkin/${7}`;
return this.http
.put(url, JSON.stringify(7), {headers: headers})
.map(res => res.json());
}

最佳答案

使用 Angular HTTP 客户端,所有 Http 请求都是 Observables,这意味着您需要订阅它们才能调用它们。

因此,在您的 checkin 功能中,您需要执行以下操作:

-checkIn(id: number){
if (confirm('Would you like to check in')) {
this.reservationService.checki(7).subscribe(res => {});
};
}

无需显式处理响应。

就处理 put 的后端而言,我会查看此答案,无论如何我都不是 c# 专家。 https://stackoverflow.com/a/32835329/8350917

关于Angular Http PUT 不向 Web-API 发送请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50843663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com