在.NET CORE的API怎么获取未知的请求参数

该问题来自社区帖: https://bbs.csdn.net/topics/617037671.

 

 

 开发环境为CORE 6.0

http://192.168.1.1/PaySDOrder

我有一个这样的请求地址用来接收支付宝的通知.

如:http://192.168.1.1/PaySDOrder?gmt_create=2023-08-13 22:58:44&charset=utf-8&seller_email=test@qq.com&subject=补0.01元

因为每次通知都是不样的.可能会有区别.

并且是以POST的形式给我.

请求怎么获取问号?后面所有参数.

 

直接用Request就行了,继承ControllerBase就能拿到。

var req = Request.QueryString;

在 .NET Core 的 API 中,您可以通过多种方式获取未知的请求参数,通常这些参数是通过查询字符串或请求正文(JSON 或表单数据)传递的。下面是一些方法:

使用 ASP.NET Core 的 Model Binding:

ASP.NET Core 具有内置的模型绑定功能,可以帮助您自动将请求参数绑定到对象模型。您可以在控制器的操作方法参数上使用 [FromQuery] 属性来获取查询字符串参数,使用 [FromBody] 属性来获取请求正文中的参数。例如:

[HttpGet]
public IActionResult Get([FromQuery] Dictionary<string, string> queryParams)
{
    // 在 queryParams 中包含了查询字符串参数的键值对
    // 您可以在这里处理这些参数
}

手动解析请求参数:

如果您需要更灵活地处理未知的请求参数,可以手动解析它们。在控制器的操作方法中,您可以使用 HttpContext 对象来访问请求上下文,并从中提取查询字符串参数、请求正文数据等。以下是一个示例:

[HttpPost]
public IActionResult Post()
{
    var request = HttpContext.Request;
    var queryParameters = request.Query; // 获取查询字符串参数
    
    // 从请求正文获取参数(JSON 格式)
    using (var reader = new StreamReader(request.Body))
    {
        var requestBody = reader.ReadToEnd();
        // 在 requestBody 中包含了请求正文数据,您可以解析它
    }

    // 处理参数
    // ...

    return Ok();
}