Вызван неправильный маршрут, если строковый параметр пуст. В поисках стандарта Rest API, чтобы избежать этого - PullRequest
0 голосов
/ 06 апреля 2020

Уровень контроллера

[Route("employee/members")]

Маршрут метода 1)

[HttpGet]
[Route("memberSearch/{searchValue}")]

Маршрут метода 2)

[HttpGet]
[Route("{memberID}")]

Сценарий 1: http://localhost/api/applications/employee/members/memberSearch/Jacob Это приведет к маршруту 1

Сценарий 2: http://localhost/api/applications/employee/members/memberSearch/ Это приведет к маршруту 2 с memberID = «memberSearch», что неверно, поскольку страница поиска будет пытаться получить полный доступ к методу

я знаю, что могу добавить маршрут 2 как

[Route("memberID/{memberID}")]

, но это не очень хороший стандарт API отдыха

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Поскольку вы хотите выполнить поиск, я бы обычно использовал базовый маршрут http://localhost/api/applications/employee/members с добавленным параметром запроса name, чтобы вы могли сделать http://localhost/api/applications/employee/members?name=Jacob. Использование параметров запроса позволит вам быть более гибкими с вашими поисками в будущем, например, добавление нумерации страниц будет выглядеть так: http://localhost/api/applications/employee/members?name=Jacob&page=2.

Использование вышеуказанного позволит вашим маршрутам не перекрываться и если вы хотите сделать маршрут поиска более уникальным, просто измените атрибут HttpGet на [HttpGet("search")], в результате чего http://localhost/api/applications/employee/members/search?name=Jacob


[ApiController]
[Route("employee/members")]
public class YourControllername : ControllerBase
{
    [HttpGet]
    public IActionResult Search([FromQuery] string name) {
        // Provide Search Functionality Here
    }

   [HttpGet("{memberID}")]
   public IActionResult Get(string memberID){
       // More code here
   }
}
1 голос
/ 07 апреля 2020

Измените свой маршрут, как показано ниже, чтобы сделать searchValue необязательным:

[HttpGet]
[Route("memberSearch/{searchValue?}")]

Результат: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...