当前位置: 首页 > 知识库问答 >
问题:

FromBody字符串参数为null

许博达
2023-03-14

这可能是非常基本的东西,但我很难弄清楚我哪里出错了。

我试图从帖子正文中获取一个字符串,但“jsonString”只显示为null。我还想避免使用模型,但这可能是不可能的。我与PostMan接触到的一段代码是:

[Route("Edit/Test")]
[HttpPost]
public void Test(int id, [FromBody] string jsonString)
{
    ...
}

也许这是我在postman上做得不正确的地方,但我一直在尝试在body-x-www-form-urlencoded部分的值部分使用“=test”(如在有关此主题的其他问题中看到的),键为jsonString,没有任何内容。我还尝试使用原始文本和原始文本/普通。我得到了id,所以我知道url是正确的。对此的任何帮助都将不胜感激。

邮递员目前的设置如下:

POST http://localhost:8000/Edit/Test?id=111
key = id  value = 111
Body - x-www-form-urlencoded
key = jsonString  value = "=test"

共有3个答案

宰父玄天
2023-03-14

当拥有

"test"

基于https://weblog.west-wind.com/posts/2017/Sep/14/Accepting-Raw-Request-Body-Content-in-ASPNET-Core-API-Controllers

asp中使用FromBody时,类似的答案字符串值为空。net web api

杨豪
2023-03-14

正在ASP中引用参数绑定。NET Web API

使用[FromBody]

要强制Web API从请求正文中读取简单类型,请将[FromBody]属性添加到参数中:

[Route("Edit/Test")]
[HttpPost]
public IHttpActionResult Test(int id, [FromBody] string jsonString) { ... }

在此示例中,Web API将使用媒体类型格式化程序从请求正文中读取jsonString的值。这是一个示例客户端请求。

POST http://localhost:8000/Edit/Test?id=111 HTTP/1.1
User-Agent: Fiddler
Host: localhost:8000
Content-Type: application/json
Content-Length: 6

"test"

当参数具有[FromBody]时,Web API使用Content-Type标头来选择格式化程序。在此示例中,内容类型为“Application/json”,请求正文是原始JSON字符串(不是JSON对象)。

在上述示例中,如果数据在正文中以正确的格式提供,则不需要模型。

对于URL编码的请求,如下所示

POST http://localhost:8000/Edit/Test?id=111 HTTP/1.1
User-Agent: Fiddler
Host: localhost:8000
Content-Type: application/x-www-form-urlencoded
Content-Length: 5

=test
钱经业
2023-03-14

通过使用[FromBody]声明jsonString参数,您告诉ASP. NET Core使用输入格式化程序将提供的JSON(或XML)绑定到模型。因此,如果您提供一个简单的模型类,您的测试应该可以工作

public class MyModel
{
    public string Key {get; set;}
}

[Route("Edit/Test")]
[HttpPost]
public void Test(int id, [FromBody] MyModel model)
{
    ... model.Key....
}

和一个类似JSON的

{
    key: "value"
}

当然,您可以跳过模型绑定并通过访问HttpContext直接检索提供的数据。控制器中的请求HttpContext. Request. body属性为您提供内容流,或者您可以通过HttpContext. Request. Forms访问表单数据。

我个人更喜欢模型绑定,因为类型安全。

 类似资料:
  • 问题内容: 我有一个关于JAXB的简单问题。这是示例代码: 如何初始化使用其他对象的String的输入元素? 问题答案: 您可以直接创建一个实例,或者如果您是从XML模式生成的Java模型,请在生成的类上使用convience方法。 schema.xsd 上面的演示代码基于从以下XML模式生成的Java模型。你会得到一个原因摆在首位属性是当你有一个既是元素和。 根 以下类是从中生成的,并且包含与您

  •  说明 调用方法: $.f2e.util.json2query(json); 函数说明: json转字符串参数 参数说明: 参数名 类型 说明 备注 json object json格式数据 无 脚本 <script> var a = {a:1,b:2,c:3} $.f2e.util.json2query(a) //输出:a=1&b=2&c=3 </script>

  • 问题内容: 我想发送一个字符串作为ajax Post参数。 如下代码: 不管用。为什么? 问题答案: 尝试这样:

  • 红线位于“打开导航抽屉”和“关闭导航抽屉”下 这张图片显示了这个问题

  • 问题内容: 我在使用Python线程并在参数中发送字符串时遇到问题。 。 其中dRecieved是连接读取的一行的字符串。它调用了一个简单的函数,到目前为止,该函数仅具有打印“ hello”的一项工作。 但是我收到以下错误 232是我尝试传递的字符串的长度,因此我猜想它会将其分解成每个字符并尝试传递类似的参数。如果我只是正常调用该函数,它将很好用,但是我真的想将其设置为单独的线程。 问题答案: 您

  • 我从客户端发送了以下查询字符串参数 在REST服务器中,我如何接收上述格式并正确分配给每个类别? 更新1 参数的值为 {_=[1437904506062],{“take”:75,“skip”:0,“page”:1,“pageSize”:75、“filter”:{“logic”:“and”,“filters”:〔{“field”:“prodCode”,“operator”:“eq”,“value”: