参数 HTTP Post c#

Arguments HTTP Post c#

我正在制作一个 HTTP POST 方法来获取数据。我有一个想法来创建一个方法来获取特定的参数,但是当我不知道如何获取参数时。在 HTTP GET 中,参数在 URL 中,更容易获取参数。如何创建一种方法来获取 HTTP Post 中的所有数据?例如,在 PHP 中,当您显示变量 $_POST 时,您会显示正文 post 中的所有数据。我如何在 C# 中执行此操作?

我的方法是这样的:

[HttpPost]
[AllowAnonymous]
public IHttpActionResult Test()
{
// Get URL Args for example is 
var args = Request.RequestUri.Query;
// But if the arguments are in the body i don't have idea.
}

Web API 有一项功能,可以自动绑定发布到控制器内的操作的参数。这叫做Parameter Binding。它允许您简单地请求 URL 内的对象或 POST 请求的主体,并且它使用称为格式化程序的东西为您执行反序列化魔法。 XML、JSON 和其他已知的 HTTP 请求类型都有一个格式化程序。

例如,假设我有以下 JSON:

{
    "SenderName": "David"
    "SenderAge": 35
}

我可以创建一个符合我要求的对象,我们称之为 SenderDetails:

public class SenderDetails
{
    public string SenderName { get; set; }
    public int SenderAge { get; set; }
}

现在,通过在我的 POST 操作中接收此对象作为参数,我告诉 WebAPI 尝试为我绑定该对象。如果一切顺利,我将获得可用的信息,而无需进行任何解析:

[Route("api/SenderDetails")]
[HttpPost]
public IHttpActionResult Test(SenderDetails senderDetails)
{
    // Here, we will have those details available, 
    // given that the deserialization succeeded.
    Debug.Writeline(senderDetails.SenderName);
}

如果我没听错,在 C# 中,您可以使用 [HttpPost] 属性来公开 post 方法。

[HttpPost]
public IHttpActionResult Test()
{
// Get URL Args for example is 
var args = Request.RequestUri.Query;
// But if the arguments are in the body i don't have idea.
}