#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. Спасибо. Я сделал именно так, как вы сказали, по-прежнему без изменений. @Хамед Могадаси