【问题标题】:Using post with oData将 post 与 oData 一起使用
【发布时间】:2019-07-13 01:37:25
【问题描述】:

我有一个使用 oData 的应用程序。到目前为止,我一直只使用 http get 请求。我也想开始使用 http post 请求。我在 Web API 中得到以下代码: 在 WebAoucConfig 我有:

var queryPostAction = builder.Function("QueryPostAction");
queryPostAction.ReturnsCollection<Test>();
queryPostAction.Parameter<string>("Query");

在我的自定义函数控制器中:

[HttpPost]
[ODataRoute("QueryPostAction")]
public IHttpActionResult QueryPostAction(string Query)
{
    List<Test> listTest = new List<Test>();  
    return Ok(listTest);
}

在应用程序中我这样称呼它:

var test = DataConnection.context.QueryPostAction("test");

我在自定义函数控制器中放了一个刹车点,但我根本没有碰到它

【问题讨论】:

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


    【解决方案1】:

    尝试调用如下方法

    var test = DataConnection.context.QueryPostAction(Query="test");

    【讨论】:

      【解决方案2】:

      它不起作用的原因是,Function 只能通过 GET 请求调用,而操作使用 POST 请求。 Functions参数需要在URL查询中,Action作为请求体(JSON格式,键值)。

      Action 请求的情况下,您不能只是简单地在函数中添加一个参数。访问参数的方式是使用ODataActionParameters

      尝试如下:

      -var queryPostAction = builder.Function("QueryPostAction");
      +var queryPostAction = builder.Action("QueryPostAction");
      queryPostAction.ReturnsCollection<Test>();
      queryPostAction.Parameter<string>("Query");
      
      [HttpPost]
      [ODataRoute("QueryPostAction")]
      -public IHttpActionResult QueryPostAction(string Query)
      +public IHttpActionResult QueryPostAction(ODataActionParameters parameters)
      {
          List<Test> listTest = new List<Test>(); 
      +   string query = parameters["Query"];
          return Ok(listTest);
      }
      

      您可以在此处找到更多详细信息和示例:Actions and Functions in OData v4 Using ASP.NET Web API 2.2

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多