我正在尝试将订单号传递给 Mediator 进行查找。
以下是订单号示例:
GRE_A14Y9-TS72
ANN_ALJB6-E6ZN
在本地主机中,我将它们传递到 URL,如下所示:
https://localhost:44318/Application/Workorder/ABC_A14Y9-TS78
在我的 Razor 页面中,我的电话在这里:
private async Task Lookup()
{
var orderNumber = request.OrderNumber;
var path = $"api/workorder/{_model.OrderNumber}";
var response = await _apiService.GetFromJsonAsync<WorkorderDTO>(path, CancellationToken.None);
return response;
}
上面的代码在调用
GetFromJsonAsync
时失败。
在 API 方面,我有查找,但它永远不会被调用。相反,我收到输入不包含任何 JSON 令牌的错误。
这是我的 HttpGet 的 API 代码,但从未到达该断点:
[ApiController]
[Route("api/application/workorder")]
[Tags("AM Application Data")]
public class WorkorderController : ControllerBase
{
private readonly IMediator _mediator;
public WorkorderController(IMediator mediator)
{
_mediator = mediator;
}
[HttpGet]
public async Task<IActionResult> Get([FromRoute] string orderNumber)
{
var request = new Workorder.Request()
{
Name = "Work Order",
OrderNumber = orderNumber,
};
var response = await _mediator.Send(request);
return Ok(response);
}
}
比较
var path = $"api/workorder/{_model.OrderNumber}";
和
[Route("api/application/workorder")]
它们不匹配。
您将获得更大的成功
[Route("api/{controller}")]
尽管您的代码中还存在一些其他问题。
request.OrderNumber
和 _model.OrderNumber
之间有什么关系?