HttpPost具有多个字符串类型参数。为什么两个参数都为空?

问题描述 投票:0回答:3

我有如下的API控制器:

[ApiController]
[Route("test")]
public class TestController : ControllerBase
{
    [HttpPost]
    public IActionResult PostData(string param1, string param2)
    {
        if (string.IsNullOrEmpty(param1) || string.IsNullOrEmpty(param2))
        {
            return BadRequest();
        }

        string result = "result =  " + param1 + "." + param2;
        return new JsonResult(result );
    }
}

[当我尝试从邮递员访问此邮件时,在撰写邮寄请求时,我在json正文中使用了following。

{
    "param1" : "abc",
    "param2": "def"
}

但是,这将导致400错误的请求。如果我在PostData方法上添加一个断点,它将到达我在检查null或空字符串并且两个参数均为null的第一行。这使我认为我没有在客户端正确构建json。有人可以指出我在这里做错了什么吗?

c# asp.net-core http-post asp.net-core-webapi asp.net-core-3.0
3个回答
0
投票

尝试改用FormCollection

[HttpPost] 
public ActionResult PostData(FormCollection collection)
{
    // Get Post Params Here
    string p1 = collection["param1"];
    string p2 = collection["param2"];
}

0
投票

这是我的方法

[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
....
    [HttpPost("[action]")]
    public string GetStudentData_1(string p1, string p2)
    {
        return p1 + p2;
    }
}

这是我的称呼方式

enter image description here

第二种方法是传递VALID Json。将Controller方法更改为:

[HttpPost("[action]")]
public string GetStudentData_1([FromBody]JObject data)
{
    return data["p1"].ToString() + data["p2"].ToString() ;
}

并确保JSON有效,然后在“正文/原始”中选择JSON (application/json)

enter image description here

data["p1"]data["p2"]使您可以访问参数。为JObject

引入以下参考
using Newtonsoft.Json.Linq;

-2
投票

从参数1和参数2中删除双反逗号

© www.soinside.com 2019 - 2024. All rights reserved.