【问题标题】:Passing large parameters to c# webapi and return result将大参数传递给c# webapi并返回结果
【发布时间】:2015-08-14 03:58:43
【问题描述】:

如何每次将 500 甚至 1000 个 URL 传递给 c# webapi 并返回结果? 我应该使用get方法还是post方法?

【问题讨论】:

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


    【解决方案1】:

    您应该在正文中发布整数数组。

    如果您使用 jquery 来发布帖子,您可以执行以下操作。

    $.ajax({
      type: "POST",
      url: url,
      data: [1, 2, 3]
    });
    

    在您的 API 中 -

    public HttpResponse Post(int[] ids){}
    

    【讨论】:

    • 问题是参数的长度,因为我提到参数大约是 1000 个 URL,每个 url 是 100 个字符长度,所以很容易超过 2048 个 URL 长度限制
    • 如果你做一个 HttpPost 它不会达到 url 长度限制。我认为它正在达到 url 最大限制,因为您将 url 中的参数传递给 Http GET 方法
    • 但是如果使用 HttpPost,结果(在本例中为 URL 数组)如何返回?
    • 可以返回列表,而不是返回 HttpResponse。您可以从 post 方法返回列表类型。
    【解决方案2】:

    第一步How to pass an array of integers to ASP.NET Web API?

    您的控制器中需要一个 post 方法。并接收一个字符串数组。

    public IEnumerable<Category> GetCategories([FromUri] int[] categoryIds)
    

    并发送请求

    /Categories?categoryids=1&categoryids=2&categoryids=3 
    

    然后在您的方法中进行计算并照常返回结果

    【讨论】:

    • 我需要传递大约 1000 个 URL,每个 URL 长度大约是 100 个字符,因此总 webapi 参数长度达到大约 100,000 个字符,超过标准 URL 长度
    • 只是一个例子,你也可以使用 Jquey AJAX 函数将一个对象作为 string[] 传递给你的 api。
    • 问题是参数的长度,因为我提到参数大约是 1000 个 URL,每个 url 是 100 个字符长度,所以很容易超过 2048 个 URL 长度限制
    猜你喜欢
    • 2011-05-10
    • 2021-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 2015-09-02
    • 1970-01-01
    • 2015-11-14
    相关资源
    最近更新 更多