ошибка «404 не найдено» при тестировании Rest API Postman

#c# #.net #api #rest #postman

#c# #.net #API #rest #postman

Вопрос:

У меня есть очень простой Rest API, написанный на c#:

 namespace Test.Controllers
{
    [Route("api/[action]")]
    [ApiController]
    public class NewController : ControllerBase
    {
        [HttpGet]
        public bool stringCheck(string value)
        {
            if (value.Contains("love"))
                return true;
            else
                return false;
        }
    }
}
  

И это команда, которую я использую в Postman:

http://localhost:5000/api/stringcheck?str=my любовь

Я не получаю никаких ошибок компилятора, но независимо от того, что я передаю в качестве значения в Postman, я всегда получаю 404. Что мне делать?

Комментарии:

1. на самом деле это не так, как вы бы использовали Postman. Я думаю, вы новичок в создании этого API. у меня нет ответа, потому что это не ошибка. Вы просто неправильно используете серверы Postman и API. 404 просто означает, что Postman не может получить то, что вы ищете, и сервер API сообщает вам, что вы делаете это неправильно. Я получил демонстрационный сервер API здесь — github.com/Jay-study-nildana/APIServerDotNetCoreWithAuth0 . попробуйте и познакомьтесь с основами.

2. Я думаю, что ваш параметр запроса неверен. Вы используете str, когда оно должно быть значением.

3. @TimFreese. Спасибо. Я исправил эту ошибку, но проблема все еще существует.

Ответ №1:

Проблема в ваших [Route] значениях, вы не можете использовать [Route("api/[action]")] вышеуказанный контроллер, поскольку это может вызвать двусмысленность, вам нужно небольшое изменение, чтобы получить результат, изменение также указывает controller , как показано ниже:

 [ApiController]
[Route("api/[controller]/[action]")]
public class NewController : ControllerBase
  

И обратите внимание, что параметр queryString должен точно совпадать с параметром метода, поэтому в postman вы должны вызвать приведенный ниже URL-адрес, чтобы получить результат:

http://localhost:5000/api/new/stringcheck ?значение = хамед

не стесняйтесь задавать вопросы. удачи.

Комментарии:

1. Спасибо. Я сделал именно так, как вы сказали, по-прежнему без изменений. @Хамед Могадаси