C# 如何处理.NET内核中参数类型错误的请求?
所以我有一个问题,我有一个端点C# 如何处理.NET内核中参数类型错误的请求?,c#,api,C#,Api,所以我有一个问题,我有一个端点 [HttpGet(“get/{id}”)] 公共异步任务Get([FromRoute]long?id) { if(id==null) 返回请求(); var result=wait Mediator.Send(新的GetIssueByIdQuery(id)); 返回CreateResponse(结果); } 如果我发出这样的请求 ..../get/1 一切正常。但如果我给出不同类型的id参数,例如: …/get/asd 服务器自动响应一些通用验证错误和404。由
[HttpGet(“get/{id}”)]
公共异步任务Get([FromRoute]long?id)
{
if(id==null)
返回请求();
var result=wait Mediator.Send(新的GetIssueByIdQuery(id));
返回CreateResponse(结果);
}
如果我发出这样的请求
..../get/1
一切正常。但如果我给出不同类型的id参数,例如:
…/get/asd
服务器自动响应一些通用验证错误和404。由于请求甚至没有到达端点,我如何自己处理这种情况,并向客户端返回一些更具描述性的信息 您可以将
id
参数的类型更改为字符串,并尝试自己对其进行解析:
public async Task<IActionResult> Get([FromRoute] string id)
{
if (string.IsNullOrWhiteSpace(id))
return BadRequest($"{nameof(id)} parameter should not be empty");
if (!long.TryParse(id, out var longValue))
return BadRequest($"{nameof(id)} should be convertible to long");
var result = await Mediator.Send(new GetIssueByIdQuery(longValue));
return CreateResponse(result);
}
公共异步任务获取([FromRoute]字符串id)
{
if(string.IsNullOrWhiteSpace(id))
返回BadRequest($“{nameof(id)}参数不应为空”);
如果(!long.TryParse(id,out var longValue))
return-BadRequest($“{nameof(id)}应可转换为long”);
var result=wait Mediator.Send(新的GetIssueByIdQuery(longValue));
返回CreateResponse(结果);
}
您可以将id
参数的类型更改为字符串,并尝试自己解析它:
public async Task<IActionResult> Get([FromRoute] string id)
{
if (string.IsNullOrWhiteSpace(id))
return BadRequest($"{nameof(id)} parameter should not be empty");
if (!long.TryParse(id, out var longValue))
return BadRequest($"{nameof(id)} should be convertible to long");
var result = await Mediator.Send(new GetIssueByIdQuery(longValue));
return CreateResponse(result);
}
公共异步任务获取([FromRoute]字符串id)
{
if(string.IsNullOrWhiteSpace(id))
返回BadRequest($“{nameof(id)}参数不应为空”);
如果(!long.TryParse(id,out var longValue))
return-BadRequest($“{nameof(id)}应可转换为long”);
var result=wait Mediator.Send(新的GetIssueByIdQuery(longValue));
返回CreateResponse(结果);
}
这是否回答了您的问题?这回答了你的问题吗?