gpt4 book ai didi

c# - FromBody 字符串参数为空

转载 作者:IT王子 更新时间:2023-10-29 04:17:18 27 4
gpt4 key购买 nike

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

我试图从 POST 正文中获取字符串,但“jsonString”仅显示为 null。我也想避免使用模型,但也许这是不可能的。我用 PostMan 打的这段代码是这个 block :

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

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

PostMan 目前是这样设置的:

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

最佳答案

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

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"
}

当然,您可以跳过模型绑定(bind)并直接通过访问 Controller 中的 HttpContext.Request 来检索提供的数据。 HttpContext.Request.Body 属性为您提供内容流,或者您可以通过 HttpContext.Request.Forms 访问表单数据。

由于类型安全,我个人更喜欢模型绑定(bind)。

关于c# - FromBody 字符串参数为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40853188/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com