从React向C# WebApi发送Json数据

16 浏览
0 Comments

从React向C# WebApi发送Json数据

我有一个C# WebAPI的操作。我正在尝试使用React将一个字符串(但是一个json字符串化的字符串)发送到它。出于某种原因,当内容类型为application/json时,我得到一个405方法不允许的错误。Urlencoded可以进入PostTransaction,但是body始终为空。我需要做出哪些改变才能够在PostTransaction中获取json?\nWebConfig\n


\nWebApiConfig\n

config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));

\nC# WebApi\n

[HttpPost]
[ActionName("PostTransaction")]
public string PostTransaction([FromBody] string body, string task, int key, string filters, string options)
{
    // 当内容类型为urlencoded时,来自react的body为空,但是来自jquery post的body是正确的
    string returnString = "未找到数据";
    if (body != null) {
        returnString = body.ToString();
    }
    return returnString;
}

\nReact\n

var dataToSend = JSON.stringify({ param1: "value1", param2: "value2"});
fetch('http://localhosturl/PostTransaction',
  {
    method: 'post',
    headers: {
      'Accept': 'application/json, text/plain, */*',
      'Content-Type': 'application/json'
    },
    body: dataToSend
  })
  .then(response => {
}

\nJQuery Post\n

var dataToSend = JSON.stringify({ param1: "value1", param2: "value2"});
$.post('http://localhosturl/PostTransaction', { '': dataToSend }).done(function (data) {
     console.debug(data); // 来自Web API的返回数据
});

\n谢谢

0
0 Comments

在React中向C# WebApi发送JSON的问题,出现的原因是需要将React中的对象转换为字符串,然后再次进行字符串化。原始的提交确实进行了这个操作,但同时将内容从urlencoded更改为application/json。如果一开始只更改为application/json而不删除第二个字符串化操作(查看历史记录),那么它应该能正常工作。

body: JSON.stringify(JSON.stringify(dataToSave))

这样做是为了确保在实际提交时仍然具有转义的引号。

那么这是最终的答案吗?如果正确,请将其标记为已解答。

0