如何在Web API控制器的Post方法中接收动态数据

安德鲁斯

jqgrid将JSON数据发布到POST请求缓冲区中

{"headerData": {
    "Tasudok": "134",
    "Kuupaev": "2015-11-23",
    "Dokumnr": "135319"
   },


"rowData": {
  "Toode":"",
  "Kogus":"0.0000",
  "Nimetus":"öäölä<a",
  "_rowsum":"0.00",
  "Id":"1639",
  "Dokumnr":"135319",
  "_oper":"edit",
  "_rowid":"1639"
  }
}

API/Entity/someid?culture=en&layout=1默认路由一样使用URL将数据发布到ASP.NET MVC4 Web API

headerDatarowData值属性在运行时中定义,并且可以变化。

例如,在某些调用中,rowData可能包含其他属性,而某些rowData属性可能会丢失。

culturelayout查询字符串参数是可选的。

如何在WebAPI控制器中接收参数?

我试过了

public class EntityController : APIController
{

public class PostParams {
    public string culture { get; set; }
    public int? layout { get; set; }
    }

    public HttpResponseMessage Post(string id, 
      [FromUri]PostParams optionalParams,
      [FromBody]IList<NameValue> headerData,
      [FromBody]IList<NameValue> rowData )
    { ... }


public class NameValue
{
    public string name, value;
}
}

但是headerData和rowData为空。如何获取所有参数?

plog17

如果JSON的结构不变

有了这个功能,您就可以像在API / Entity / someid?culture = en&layout = 1这样的网址上发送您提供的正文一样。

要在控制器路由中指定可选的查询参数,请为它们提供一个默认值,例如

public class EntityController : APIController
{
    public HttpResponseMessage Post([FromUri]string culture="EN", [FromUri]int layout=1, YourBody body )
    { ... }
}

如果YourBody始终像您提到的那样,则应自动反序列化以下内容:

public class YourBody
{
    public Dictionary<string, string> HeaderData {get; set;}
    public Dictionary<string, string> RowData{get; set;}
}

并且可以让您完全接触到身体的任何元素。

JSON的结构是否可以更改

这样的事情将允许接收任何一种json:

public HttpResponseMessage  Post([FromBody]JToken body)
{
    // Process the body
    return ...
}

您将需要一些额外的验证,因为不会进行对象反序列化。您会知道的唯一想法是您的身体是JSON。

因此,您可能需要对其进行分析,以查看其外观是否符合您的期望。请参阅有关如何使用JToken访问JSON元素的文章

例如,您可以执行以下操作来处理不断变化的正文内容,并仍然处理路线的可选查询参数:

public HttpResponseMessagePost([FromBody]JToken body, [FromUri]string culture="EN", [FromUri]int layout=1)
{
    JObject headerData= body["headerData"].Value<JObject>();
    JObject headerData= body["rowData"].Value<JObject>();
    return ...;
}

您还可以阅读有关的原始数据发布到的WebAPI控制器的其他替代品。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在WebAPI控制器中接收动态数据

来自分类Dev

如何从控制器中的Ajax send()方法接收数据

来自分类Dev

如何在控制器中使用 post 值在回调中接收表单数据?

来自分类Dev

如何在.net MVC Web API控制器方法中设置内容范围标头?

来自分类Dev

如何在ASP.NET Web API异步控制器方法中返回对象列表

来自分类Dev

如何在.net MVC Web API控制器方法中设置内容范围标头?

来自分类Dev

如何在MVC中解析Web API控制器方法调用

来自分类Dev

C#Web Api中的动态注册控制器

来自分类Dev

从Web Api控制器中的Post方法获取任何参数

来自分类Dev

在ASP Web API控制器中创建自定义方法并检索其数据

来自分类Dev

如何在Web API中的特定控制器中禁用camelCase?

来自分类Dev

如何在AngularJS中的控制器之间动态更改数据

来自分类Dev

如何在Web API2控制器中放置多个GET方法?

来自分类Dev

如何在Web API控制器中获取页面URL?

来自分类Dev

如何在.NET Web API中配置路由路径的控制器部分

来自分类Dev

如何在Web API控制器中全局设置会话变量?

来自分类Dev

如何在一个Web API控制器中获取两个模型?

来自分类Dev

如何在 ASP Net Core 中授权 Web API 控制器

来自分类Dev

如何访问从同一控制器中服务块之外的 api 接收的数据

来自分类Dev

如何在Codeigniter3控制器中获取POST数据

来自分类Dev

如何使用angularjs从Web api控制器返回数据?

来自分类Dev

如何通过ajax在控制器的方法中获取数据?

来自分类Dev

如何通过ajax在控制器的方法中获取数据?

来自分类Dev

我如何在控制器中获取post参数

来自分类Dev

做junit时如何在Spring MVC控制器中传递参数到post方法?

来自分类Dev

如何为Web API控制器方法指定ContentType

来自分类Dev

如何在angularjs的控制器中输出json数据

来自分类Dev

如何在Odoo控制器中获取JSON数据?

来自分类Dev

如何在功能扩展控制器中获取数据?

Related 相关文章

  1. 1

    如何在WebAPI控制器中接收动态数据

  2. 2

    如何从控制器中的Ajax send()方法接收数据

  3. 3

    如何在控制器中使用 post 值在回调中接收表单数据?

  4. 4

    如何在.net MVC Web API控制器方法中设置内容范围标头?

  5. 5

    如何在ASP.NET Web API异步控制器方法中返回对象列表

  6. 6

    如何在.net MVC Web API控制器方法中设置内容范围标头?

  7. 7

    如何在MVC中解析Web API控制器方法调用

  8. 8

    C#Web Api中的动态注册控制器

  9. 9

    从Web Api控制器中的Post方法获取任何参数

  10. 10

    在ASP Web API控制器中创建自定义方法并检索其数据

  11. 11

    如何在Web API中的特定控制器中禁用camelCase?

  12. 12

    如何在AngularJS中的控制器之间动态更改数据

  13. 13

    如何在Web API2控制器中放置多个GET方法?

  14. 14

    如何在Web API控制器中获取页面URL?

  15. 15

    如何在.NET Web API中配置路由路径的控制器部分

  16. 16

    如何在Web API控制器中全局设置会话变量?

  17. 17

    如何在一个Web API控制器中获取两个模型?

  18. 18

    如何在 ASP Net Core 中授权 Web API 控制器

  19. 19

    如何访问从同一控制器中服务块之外的 api 接收的数据

  20. 20

    如何在Codeigniter3控制器中获取POST数据

  21. 21

    如何使用angularjs从Web api控制器返回数据?

  22. 22

    如何通过ajax在控制器的方法中获取数据?

  23. 23

    如何通过ajax在控制器的方法中获取数据?

  24. 24

    我如何在控制器中获取post参数

  25. 25

    做junit时如何在Spring MVC控制器中传递参数到post方法?

  26. 26

    如何为Web API控制器方法指定ContentType

  27. 27

    如何在angularjs的控制器中输出json数据

  28. 28

    如何在Odoo控制器中获取JSON数据?

  29. 29

    如何在功能扩展控制器中获取数据?

热门标签

归档