Использование веб-API с параметрами в JSON с FromUri или FromBody - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь создать пример с веб api. Я хочу получить полученные параметры в формате JSON с fromuri или frombody. Когда я создаю клиента, я хочу отправить объект или JSON с информацией.

В моем веб-API у меня есть это

[HttpPost]
public IHttpActionResult Post([FromUri]Peticion peticion)
{
     return Ok(peticion);
}

и в моем клиенте

Peticion obj = new Peticion();
obj.cliente = 2;
obj.factura = 22;
string DATA = Newtonsoft.Json.JsonConvert.SerializeObject(obj);

var client = new HttpClient();
HttpContent content = new StringContent(DATA, UTF8Encoding.UTF8, "application/json");

HttpResponseMessage message = 
client.PostAsync("http://localhost:57418//api/Deudor/",content).Result;

if (message.IsSuccessStatusCode)
{
   string result = message.Content.ReadAsStringAsync().Result;
}

Но мне нужно, чтобы мой клиент получил JSON. В веб-API мне нужно получить два параметра (клиент, фактура), а в моем клиенте мне нужно получить информацию об этом клиенте (имя, счет и т. Д.) В формате JSON.

Я использовал почтальон и получил JSON с информацией. Но в моем клиенте C # я не смог.

Ответы [ 2 ]

0 голосов
/ 15 января 2019

В Web API, если параметр метода контроллера не является «простым» типом, он пытается получить значение из тела. Поэтому я думаю, что вы хотите удалить [FromUri] в ваших Post() параметрах, потому что вы фактически отправляете эту информацию в теле запроса.

Источник: https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

0 голосов
/ 15 января 2019

Независимо от использования .net core или framework, вы можете использовать HttpClient для отправки запросов Get и Post на ваш API.

POST-запрос:

HttpClient client = new HttpClient();
var content = new StringContent(JsonConvert.SerializeObject(YourObject), Encoding.UTF8, "application/json");
client.PostAsync("your url", content);

Тогда вы можете получить контент [FromBody] Вы можете использовать запросы Post и получать параметры из URL, но в этом случае лучше использовать get.

Получить запрос:

HttpClient client = new HttpClient();
client.GetAsync("your url/api/controller/id/{id}");

В обоих случаях вам нужно установить маршруты для ваших методов с типами запросов (GET, POST). например: в приведенном выше примере get:

[Route("api/[controller]")
public class SomeController
{
  [HttpGet]
  [Route("id/{id}")]
  public someGetMethod(int id){
    //do something with id here...
  }
}
...