@RequestParam 和 angularjs $http.post 数据检索
@RequestParam and angularjs $http.post data retrieval
我正在尝试发送数组
arr=["xxx.yyy","zzz.vvv"]
到 spring 这样的端点:
$http.post("url",arr)
spring 边:
@PostMapping(value = "url")
public Set<String> func(@RequestParam(name="arr") String[] arr) {
}
但是我一直收到
org.springframework.web.bind.MissingServletRequestParameterException: Required String[] parameter 'arr' is not present
如何通过参数名访问数组?我需要发送一些数组,所以我假设可以通过它们的名称来引用它们,但是@RequestParam 似乎不起作用
第二个参数应该是一个对象,array
和secondArray
代表参数的名称。 yourArray
和 anotherArray
将是您在 Angular 应用程序中的数组。
$http.post(url', {
array: yourArray,
secondArray: anotherArray,
});
然后,在您的 BE 端,您也将这些值称为 array
和 secondArray
。
您需要创建一个以arr
为键的params对象:
var params = {
'arr': ["xxx.yyy","zzz.vvv"]
};
$http.post("url", params);
根据我从 spring 文档中看到的内容:
@RequestParam is for URL query parameters
@RequestBody is for parameters from body
作为post发送请求体中的信息,请尝试使用最新的:
@PostMapping(value = "url")
public Set<String> func(@RequestBody String[] arr) {
}
您可能还需要将 angular 部分修改为:
$http.post("url",{arr: arr})
arr=["xxx.yyy","zzz.vvv"]
var sendData = {data:arr};
$http.post("url", sendData);
在spring中可以得到sendData。当你要获取值时,你应该给出键或索引。前任。到达 [0], arr.name
要通过 post 发送多个数组,spring 端应该有一个对象,例如ArrayWrapper 将包含 3 个数组,然后应该通过 angular 发送一个 ArrayWrapper 对象,如果您使用的是像 jackson 这样的库,它会将对象从 requestbody 转换为正确的 java 对象,您可以进一步处理。
Angular:
getUsuarioId(id:number): Observable<Usuario>{
return this.http.post<Usuario>(`${this.url}usuarioId`, id, {headers: {'Content-Type':'application/json', 'id': `${id}`}} )
}
Java:
@PostMapping("/usuarioId")
public Usuario getUserId(@RequestHeader Integer id) {
return usuarioService.findByIdUsuario(id);
}
你可以把id变量改成json,如下:
getUsuarioId(id:number): Observable<Usuario> {
let params = {
'Content-Type':'application/json',
'id':`${id}`
}
return this.http.post<Usuario>(`${this.url}usuarioId`, params, {headers: params})
}
我正在尝试发送数组
arr=["xxx.yyy","zzz.vvv"]
到 spring 这样的端点:
$http.post("url",arr)
spring 边:
@PostMapping(value = "url")
public Set<String> func(@RequestParam(name="arr") String[] arr) {
}
但是我一直收到
org.springframework.web.bind.MissingServletRequestParameterException: Required String[] parameter 'arr' is not present
如何通过参数名访问数组?我需要发送一些数组,所以我假设可以通过它们的名称来引用它们,但是@RequestParam 似乎不起作用
第二个参数应该是一个对象,array
和secondArray
代表参数的名称。 yourArray
和 anotherArray
将是您在 Angular 应用程序中的数组。
$http.post(url', {
array: yourArray,
secondArray: anotherArray,
});
然后,在您的 BE 端,您也将这些值称为 array
和 secondArray
。
您需要创建一个以arr
为键的params对象:
var params = {
'arr': ["xxx.yyy","zzz.vvv"]
};
$http.post("url", params);
根据我从 spring 文档中看到的内容:
@RequestParam is for URL query parameters
@RequestBody is for parameters from body
作为post发送请求体中的信息,请尝试使用最新的:
@PostMapping(value = "url")
public Set<String> func(@RequestBody String[] arr) {
}
您可能还需要将 angular 部分修改为:
$http.post("url",{arr: arr})
arr=["xxx.yyy","zzz.vvv"]
var sendData = {data:arr};
$http.post("url", sendData);
在spring中可以得到sendData。当你要获取值时,你应该给出键或索引。前任。到达 [0], arr.name
要通过 post 发送多个数组,spring 端应该有一个对象,例如ArrayWrapper 将包含 3 个数组,然后应该通过 angular 发送一个 ArrayWrapper 对象,如果您使用的是像 jackson 这样的库,它会将对象从 requestbody 转换为正确的 java 对象,您可以进一步处理。
Angular:
getUsuarioId(id:number): Observable<Usuario>{
return this.http.post<Usuario>(`${this.url}usuarioId`, id, {headers: {'Content-Type':'application/json', 'id': `${id}`}} )
}
Java:
@PostMapping("/usuarioId")
public Usuario getUserId(@RequestHeader Integer id) {
return usuarioService.findByIdUsuario(id);
}
你可以把id变量改成json,如下:
getUsuarioId(id:number): Observable<Usuario> {
let params = {
'Content-Type':'application/json',
'id':`${id}`
}
return this.http.post<Usuario>(`${this.url}usuarioId`, params, {headers: params})
}