c# - ASP.NET - GET 请求上的 API 400 错误
问题描述
我有这个控制器:
namespace Cantrel.Application.CantrelSearchApi.Controllers
{
[Route("api/[controller]")]
[Authorize]
public class MonitorsController : Controller
{
private readonly IMonitoringApiService monitoringService;
private readonly IClientsApiService clientsService;
private readonly ILogger<MonitorsController> logger;
public MonitorsController(IMonitoringApiService monitoringService,
IClientsApiService clientsService,
ILogger<MonitorsController> logger)
{
this.monitoringService = monitoringService;
this.clientsService = clientsService;
this.logger = logger;
}
[HttpGet("{id}")]
public async Task<IActionResult> Get(string id)
{
if (string.IsNullOrEmpty(null))
{
return BadRequest("No id was provided. Please provide a valid monitor id or subject id.");
}
try
{
MonitorDto monitor;
if (Guid.TryParse(id, out Guid monitorId))
{
monitor = await GetByMonitorId(monitorId);
}
else
{
monitor = await GetBySubjectId(id);
}
if (monitor == null)
{
return NotFound();
}
return Json(monitor);
}
catch (Exception ex)
{
logger.LogError($"[{Request.Path.Value}]: {ex.ToString()}");
return new StatusCodeResult(500);
}
}
我在 Postman 中打了以下电话:
GET: {{api}}/Monitors/ABCDEFGH-1234-4567-8901-ABCDEFGHIJKL
400 Bad Request
我收到一条消息错误,而不是该监视器上的预期信息返回No id was provided. Please provide a valid monitor id or subject id
。
我不确定我是否理解这是如何发生的。该字符串显然既不是 NULL 也不是空的。
如果我应该提供任何其他类的代码来帮助诊断,请告诉我。
解决方案
这总是正确的:
if (string.IsNullOrEmpty(null)) //always true!
{
return BadRequest("No id was provided. Please provide a valid monitor id or subject id.");
}
因此,您将始终收到 BadRequest 响应。您需要将其更改为:
if (string.IsNullOrEmpty(id))
推荐阅读
- windows - PowerShell 在 Windows Temp 中创建随机 ps1 脚本
- c# - 尝试将文本文件转换为 Excel
- google-cloud-platform - Publishing PermissionDenied desc = 用户无权执行此操作。谷歌云发布订阅
- python - TurboGear 框架 python 3.7 不起作用快速入门
- haskell - 通过 TemplateHaskell 的 sizeof、offsetof 和对齐
- javascript - npm run storybook 在新的反应项目上失败
- batch-file - 如果 zip 文件和文件夹名称相同,请将 zip 文件复制到文件夹中
- scala - 使用 UDF 及其性能的 Spark Scala 数据集验证
- python - 重复相同的代码块以创建不同的值
- ecmascript-6 - 'import' 和 'export' 可能只与 'sourceType: module' 一起出现