Web API Get Method with Complex Object as Parameter

后端 未结 3 2005
情话喂你
情话喂你 2021-01-13 07:59

How to send a Complex Object( Which may have huge data) to a Web API Get Method? I know I can user \'FromUri\' option, but since the data is too large I can\'t use that opti

相关标签:
3条回答
  • 2021-01-13 08:17

    How to send a Complex Object( Which may have huge data) to a Web API Get Method?

    You can't. GET methods do not have request body. You have to send everything in the query string which has limitations.

    You should use POST instead.

    0 讨论(0)
  • 2021-01-13 08:22

    You need to create a method similar to the below:

    [HttpPost]
    public HttpResponseMessage MyMethod([FromBody] MyComplexObject body)
    {
        try
        {
            // Do stuff with 'body'
            myService.Process(body);
        }
        catch (MyCustomException)
        {
            return new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent("FAILED") };
        }
    
        return new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent("OK") };
    }
    

    If your POSTing data larger than 4MB, then you'll need to adjust your web.config to configure IIS to accept more, the below example sets the maxRequestLength and maxAllowedContentLength to 10MB:

    <system.web>
        <httpRuntime maxRequestLength="10240" />
    </system.web>
    

    and

    <system.webServer> 
          <security> 
              <requestFiltering> 
                 <requestLimits maxAllowedContentLength="10485760" /> 
              </requestFiltering> 
          </security> 
    </system.webServer>
    
    0 讨论(0)
  • 2021-01-13 08:28

    use OData maybe its fine for not too big objects

    https://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api

    Or use FromUri like below

    public MethodName Get([FromUri]Model model, int page, int pageSize)

    0 讨论(0)
提交回复
热议问题