【问题标题】:How to get all the parameters passed to the request in web API如何在 Web API 中获取传递给请求的所有参数
【发布时间】:2018-09-07 10:24:18
【问题描述】:

我正在尝试获取传递给请求的所有参数,以便验证类文件中未声明的任何参数是否会引发异常。

假设我的类文件是:

    [PermissionFilter("somepermision")]
    [Route("/Userdetails", "POST")]
    public class UserDetails
    {
        public string surname{ get; set; }
        public string forename{ get; set; }
    }

所以如果用户从邮递员那里错误地发送参数,我想抛出一个异常。有什么方法可以从最终用户那里获取所有请求参数。这样我就可以根据我的要求对其进行验证。假设用户在请求类文件中发送了一些额外的参数以及提到的参数,我想在这种情况下抛出异常。

【问题讨论】:

  • 你需要配置你的路由,不会碰到不必要的你的api
  • 关心不需要的附加参数是很不寻常的。你真的需要这样做吗?无论如何,这些细节都会被忽略。
  • 我想要实现的是,如果最终用户错误地发送参数 sur name 而不是 surname,那么我想向最终用户发送错误消息。

标签: c# api asp.net-web-api web httpwebrequest


【解决方案1】:

您将在 MS_QueryNameValuePairs 键的 Request.Parameters 中找到请求参数

 [HttpPost]
    public HttpResponseMessage Post()
    {
        var keyValuePair =this.Request.Properties["MS_QueryNameValuePairs"];
    }

并在其上创建一个 foo 循环以获取它们,或者您可以像这样手动获取它们:

      [HttpPost]
    public HttpResponseMessage Post()
    {
        var query = this.Request.RequestUri.Query;
        query.Remove(0);
        List<string> paramteters = query.Split('&').ToList();
     }

这对你有用:D

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 2021-09-24
    • 2021-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多