angular - Angular Http PUT 未向 Web-API 发送请求
问题描述
我有使用实体框架的 ac# WEB API - 我正在尝试通过我的角度前端发出一个放置请求以模拟“签入”功能,但该请求没有通过。
这是我的 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);
};
}
预订服务.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(id: number){
if (confirm('Would you like to check in')) {
this.reservationService.checki(7).subscribe(res => {});
};
}
无需显式处理响应。
至于处理 put 的后端,我会看看这个答案,无论如何我都不是 ac# 专家。https://stackoverflow.com/a/32835329/8350917
推荐阅读
- c++ - std::filesystem::create_directories() 在带有斜杠的路径上的返回值
- c# - C# 使用 AutoIt 中的 ImageSearch
- python - 在python中使用for循环进行集成?
- reactjs - 如何在多个通用组件之间共享/拆分 Redux Store?
- java - 实现了 2 个相同的 JMS 侦听器而不是第一个。ActiveMQ 并且无法传输和接收对象
- python - Keras 加载使用 scipy mat 保存的模型权重
- c# - C# - 简化 ValueType 转换
- search - 如何跟踪访问 bfs/dfs 中所有节点的路径
- google-cloud-sql - 为什么我在指定 TCP 时使用 Cloud SQL 代理获得“不支持的网络 unix”?
- reactjs - React Apollo 配置问题