这可能是非常基本的东西,但是我很难弄清楚我要去哪里。
我试图从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=111 key = id value = 111 Body - x-www-form-urlencoded key = jsonString value = "=test"
通过声明jsonString参数,[FromBody]可以告诉ASP.NET Core使用输入格式器将提供的JSON(或XML)绑定到模型。因此,如果您提供一个简单的模型类,那么您的测试应该可以工作
[FromBody]
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。
HttpContext.Request
HttpContext.Request.Body
HttpContext.Request.Forms
由于类型安全,我个人更喜欢模型绑定。