Несколько значений NULL в параметре метода получения в веб-API - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть такой пример кода ниже, который вызывает API с использованием метода get:

CrudService.getAll("sampleurl/param1/param2/param3");

Из этого примера param1 и param2 могут иметь значение null / blank. Что происходит, так это то, что значение param3 переходит к param1, когда дело доходит до контроллера API.

Как мне сохранить правильные значения для параметра, даже если может быть несколько пустых / пустых значений? ТИА.

Ответы [ 5 ]

0 голосов
/ 18 сентября 2018

Ответ @Jin Thakur - один из способов сделать это, но я сделал это вместо этого. Похоже на ответ @Sinan. Спасибо всем.

От JS:

CrudService.getAll("/api/home/monitor/param?param1=&param2=&param3=val1");

Из C # API:

[Route("api/home/monitor/param")]
[HttpGet]
public IHttpActionResult GetSomeValue(string param1, string param2, string param3)
{

//Some Codes

}
0 голосов
/ 16 сентября 2018

Если вы выбираете такую ​​структуру url, это означает, что у вас есть какая-то иерархическая структура. Например mysite.com/vehicle/car/mercedes/classc/details/engine может показать или вернуть детали двигателя класса C. mercedes. Само собой разумеется, что не передать бренд или модель автомобиля не имеет смысла.

Если вы хотите сохранить эту иерархическую структуру, вы должны указать URL, который позволит вам упомянуть категорию «неопределенная» в структуре, например: mysite.com/vehicle/car/brandlesscars/mybrandlessmodel/details/engine

Если сегменты вашего URL представляют параметр запроса, а не последовательность путей для доступа к более подробному разделу, лучше иметь URL с такими параметрами: mysite.com/vehicle/details/engine?type=car&brand=mercedes&model=classc.

0 голосов
/ 12 сентября 2018
CrudService.getAll("sampleurl/param1/param2/param3");

Вы должны передать фиктивное значение для param1, поэтому, если param1 пусто, оставьте его "param1". различные возможные вызовы на основе пустых параметров:

  • ("sampleurl/param1/param2/2");

  • ("sampleurl/param1/3/2");

  • ("sampleurl/param1/param2/param3");

Поэтому, когда вызов идет в API, проверьте, есть ли param1 = param1, игнорируйте значение в любом случае вам нужно сохранить 3 значения, чтобы соответствовать сигнатуре API.

0 голосов
/ 15 сентября 2018

вы можете явно отправить запрос с именами параметров и значениями, как ответ от Павла и применение этого к вашему примеру: CrudService.getAll ( "http://sampleurl/controller/action?param1="value"&param2="value&param3=value");

Я надеюсь, что это поможет вам

0 голосов
/ 12 сентября 2018

если вы используете asp API, параметры должны отправляться следующим образом.

  string url = $"https://example.com/api/controllerName/Action?parms1={value}&parms2={value}";
                                    response = client.GetAsync(url).Result;

И если вы используете asmx, вам следует отредактировать веб-сервис для обработки параметров, таких как:

CrudService.getAll("sampleurl",parm1,parm2,etc..);

Надеюсь, это поможет вам.

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