Estou muito atrasado para isso, mas estava tendo problemas semelhantes e, depois de um dia analisando muitas respostas aqui e obtendo informações, encontrei a solução mais fácil / leve para retornar um ou mais parâmetros a uma API da Web 2. segue:
Isso pressupõe que você saiba como configurar uma ação / controlador de API da Web com roteamento correto, caso contrário, consulte: https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with -aspnet-web-api / tutorial-seu-primeiro-web-api .
Primeiro, a ação do controlador, esta solução também requer a biblioteca Newtonsoft.Json.
[HttpPost]
public string PostProcessData([FromBody]string parameters) {
if (!String.IsNullOrEmpty(parameters)) {
JObject json = JObject.Parse(parameters);
// Code logic below
// Can access params via json["paramName"].ToString();
}
return "";
}
Lado do cliente usando jQuery
var dataToSend = JSON.stringify({ param1: "value1", param2: "value2"...});
$.post('/Web_API_URI', { '': dataToSend }).done(function (data) {
console.debug(data); // returned data from Web API
});
O principal problema que encontrei foi garantir que você envie apenas um único parâmetro geral de volta à API da Web e verifique se ele não tem nome apenas o valor { '': dataToSend }
caso contrário, seu valor será nulo no lado do servidor.
Com isso, você pode enviar um ou vários parâmetros para a API da Web em uma estrutura JSON e não precisa declarar nenhum objeto extra no lado do servidor para manipular dados complexos. O JObject também permite que você itere dinamicamente todos os parâmetros passados, permitindo uma escalabilidade mais fácil caso seus parâmetros sejam alterados ao longo do tempo. Espero que ajude alguém que estava lutando como eu.