FromBody字符串参数为空
这可能是非常基本的东西,但是我很难弄清楚我要去哪里。
我试图从POST正文中获取一个字符串,但“
jsonString”仅显示为null。我也想避免使用模型,但这也许是不可能的。我用PostMan编写的代码片段是:
[Route("Edit/Test")][HttpPost]
public void Test(int id, [FromBody] string jsonString)
{
...
}
也许这是我对邮递员做的不正确的事情,但是我一直在尝试在正文的值部分使用x = www-form-urlencoded部分,使用“ =
test”(如关于该主题的其他问题所示)密钥为jsonString,什么也没有。我也尝试使用原始文本和原始文本/纯文本。我获得了ID,因此我知道网址是正确的。任何帮助,将不胜感激。
目前,PostMan的设置如下:
POST http://localhost:8000/Edit/Test?id=111key = id value = 111
Body - x-www-form-urlencoded
key = jsonString value = "=test"
回答:
通过声明jsonString参数,[FromBody]
可以告诉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.Request
控制器来检索提供的数据。该HttpContext.Request.Body
属性为您提供内容流,或者您可以通过访问表格数据HttpContext.Request.Forms
。
由于类型安全,我个人更喜欢模型绑定。
以上是 FromBody字符串参数为空 的全部内容, 来源链接: utcz.com/qa/435234.html