ASP.NET - ошибка API 400 при запросе GET - PullRequest
0 голосов
/ 28 августа 2018

У меня есть этот контроллер:

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);
        }
    }

Я делаю следующий звонок в Почтальоне:

GET: {{api}}/Monitors/ABCDEFGH-1234-4567-8901-ABCDEFGHIJKL

Вместо ожидаемого возврата информации на этом мониторе я получаю ошибку 400 Bad Request с сообщением No id was provided. Please provide a valid monitor id or subject id.

Я не уверен, что понимаю, как это происходит. Строка явно не пуста и не пуста.

Пожалуйста, дайте мне знать, если есть какой-либо другой код класса, который я должен предоставить, чтобы помочь в диагностике.

1 Ответ

0 голосов
/ 28 августа 2018

Это всегда так:

        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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...