使用HttpClient / HttpParams以角度发布多维数组(string [] [])

时间:2018-03-31 00:49:36

标签: angular http post multidimensional-array parameters

我无法通过角度(2+)找到最佳实践方法的指导。 Angular的HttpClient post function具有HttpParams参数。 HttpParams是[param: string]: string | string[]类型的键/值映射。但是,我需要发布一个多维数组(2D)参数(string[][])。即。

this.http.post(url, {}, {
    params: {
        2d: [ [ 'arr1' ], [ 'arr2' ] ]
    }
});

但这似乎并没有受到角度的HttpParams类的支持。在搜索其他问题时,我发现了

我想知道是否有一种干净的方式来做角度的。如果没有,为什么有角度做出这个设计决定,什么是变通方法?

2 个答案:

答案 0 :(得分:1)

你能把它作为json数组发送吗?

let data= [
    ["string1","string2"],
    ["string3", "string4"]
 ];


let body= {
 content: data
};

this.http.post(url, body)

答案 1 :(得分:0)

感谢@ Jota.Toledo,@ David和"Is there any difference between using request.body or request.params", 上的这个问题,我的主要误解是试图将HttpParams用于所有事情并忽略请求体。解决我的问题的最佳方法是简单地在请求正文中传递多维数组。

这是"最佳实践"方式有几个原因

  • 请求正文对数据的复杂性没有任何限制(type "any" in the angular docs
  • 使用正文不会对网址中的数据进行编码,如果传递的数据太多,这可以避免潜在的状态414(Request-URI Too Long)
  • 遵循RESTful模式,您通常使用params进行GET请求,使用正文进行POST请求(Stack Overflow question source