我正在制作一个 HTTP POST 方法来获取数据。我有一个想法来创建一个方法来获取特定的参数,但是当我不知道如何获取参数时。在 HTTP GET 中,参数在 URL 中,更容易获取参数。如何创建一种方法来获取 HTTP Post 中的所有数据?例如,在 PHP 中,当您显示 var $_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 有一项功能,可以自动将发布的参数绑定(bind)到 Controller 内的操作。这叫做 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 尝试为我绑定(bind)该对象。如果一切顺利,我将获得可用的信息,而无需进行任何解析:
[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# - 参数 HTTP Post c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32451480/