如何将对象传递给 web api?

我在下面有一个 GET API 方法的代码。


我无法发送对象参数并让 API 方法使用它。调用了 API 方法,但参数始终为 null。


问:如何更改我的代码以启用对象输入的接收?


一般来说,我想我不应该用 GET 请求发送对象?但我想这可能吗?


我试过使用 [FromBody] 和不使用。我在想对象不应该是 [FromUri] 吗?


为了调试,我使用 Swagger;示例对象生成得很好,但是当我发送它时,它以空值到达。


通过 RestSharp 使用我的客户端时的行为相同。


[SwaggerResponseExample(HttpStatusCode.OK, typeof(GetProductBasesRequestExamplesForSwagger))]

[SwaggerResponse(HttpStatusCode.BadRequest, Type = typeof(string))]

public IHttpActionResult Get([FromBody]GetProductBasesRequest getProductBasesRequest)

{

    // transaction id to trace this calculation across processes.

    var transactionId = Guid.NewGuid();


    using (LogContext.PushProperty("Method", MethodBase.GetCurrentMethod().Name))

    using (LogContext.PushProperty("TransactionId", transactionId))

    {

        try

        {

            if(getProductBasesRequest==null)

                throw new ArgumentNullException(nameof(getProductBasesRequest),"Input can't be null");


            Log.Logger.Debug("ProductBase Get : {@GetProductBasesRequest}", getProductBasesRequest);


            var content = new GetProductBasesResponse

            {

                ProductBases = _productBaseRepository.Get()

            };

            return Ok(content);

        }

        catch (Exception e)

        {

            Log.Logger.Error(e, "ProductBases.Get");

            return BadRequest(transactionId.ToString());

        }

    }

}


慕神8447489
浏览 216回答 1
1回答

POPMUISE

Get Req do not have body ... 试试这样public IHttpActionResult Get([ModelBinder(typeof(WebApiDataSourceRequestModelBinder))] GetProductBasesRequest getProductBasesRequest)或者public IHttpActionResult Get([FromUri] GetProductBasesRequest getProductBasesRequest)
打开App,查看更多内容
随时随地看视频慕课网APP