【发布时间】:2022-01-04 21:18:51
【问题描述】:
我正在尝试创建一个应该删除多个 ID 的端点。它应该匹配deleteRoom(ids: number[])。您可以在下面看到我尝试过的内容,但它与 angular 的请求不匹配。
deleteRoom(ids: number[]) {
return this.httpClient.delete(`${this.actionUrl}?id=${ids.toString()}`);
}
public class RoomsController : ApiControllerBase
{
[HttpGet]
public async Task<ActionResult<IList<RoomDto>>> GetRooms()
{
var result = await Mediator.Send(new GetRoomsQuery()).ConfigureAwait(false);
return Ok(result);
}
[HttpGet("available")]
public async Task<ActionResult<IList<RoomDto>>> GetAvailableRooms(
[FromQuery] DateTime from,
[FromQuery] DateTime to,
[FromQuery] int? departmentId,
[FromQuery] RoomType? roomType)
{
var query = new GetAvailableRoomsQuery
{
From = from,
To = to,
DepartmentId = departmentId,
RoomType = roomType
};
var result = await Mediator.Send(query).ConfigureAwait(false);
return Ok(result);
}
[HttpPost]
public async Task<ActionResult<int>> Create(CreateRoomCommand command)
{
return await Mediator.Send(command).ConfigureAwait(false);
}
[HttpPut("{id:int}")]
public async Task<ActionResult> Update(int id, UpdateRoomCommand command)
{
if (id != command.Id) return BadRequest();
await Mediator.Send(command).ConfigureAwait(false);
return NoContent();
}
[HttpDelete("{id:int}")]
public async Task<ActionResult> Delete(int id)
{
await Mediator.Send(new DeleteRoomCommand {Id = id}).ConfigureAwait(false);
return NoContent();
}
[HttpDelete("{ids}")]
public async Task<ActionResult> Delete(int[] ids, DeleteRoomsCommand command)
{
await Mediator.Send(command).ConfigureAwait(false);
return NoContent();
}
}
【问题讨论】:
-
你检查
${this.actionUrl}?id=${ids.toString()}表达式的值是什么? -
@Chetan, `localhost:5001/api/Rooms?id=9,10`
-
9,10转换为服务器上的数组...您可能想尝试像http://example.net/api/rooms?ids[0]=9&ids[1]=10这样构建您的 URL,首先从邮递员那里尝试这个,看看您是否能够调用 API。然后,您可以更改 Angular 代码以 tis 形式为多个 id 创建 URL。
标签: c# asp.net-core .net-core