gpt4 book ai didi

javascript - AngularJS $http POST 在 Java Controller 后端作为 null 变量接收

转载 作者:行者123 更新时间:2023-12-02 09:01:55 25 4
gpt4 key购买 nike

我希望从 AngularJS 发送数据,以便稍后在 Python+Java 后端使用它。问题是它被发送为空,我不明白为什么。谷歌浏览器的控制台没有错误,但我可以在我的java服务器控制台(mvn -P dev)中看到问题,我使用 return 来查看到达时变量的值:

DEBUG 13496 --- [XNIO-23 task-27] a.c.p.s.aop.logging.LoggingAspect: Exit: us.com.generic.web.rest.DataController.getData() with result = The variable 'null' was saved

Java Controller ,从 AngularJS 获取信息:

@RestController
@RequestMapping("/api")
public class DataController {

@RequestMapping("/data/")
@ResponseStatus(code = HttpStatus.OK)
public @ResponseBody String getData( @RequestParam(name="dataVariable", required=false) String dataVariable) {

return "The variable '" + dataVariable + "' was saved";
}
}

AngularJS Controller :

angular
.module('Generic')
.controller('DataController', DataController);

DataController.$inject = ['$scope', '$http', 'URI', '$timeout'];

function DataController ($scope, $http, URI, $timeout) {

var myInformation = 'HeadStreet';

$http.post(URI + 'api/data/', {
dataVariable: myInformation
}, {
withCredentials: true,
headers: {
'Content-Type': 'charset=utf-8'
}
}).then(Success, Error);
}

function Success() {
alert('Variable sent');
}

function Error() {
alert('Issue while sending data');
}
}

最佳答案

您将 dataVariable 作为 json 发布在请求正文中。 @RequestParam 从查询参数中读取。

如果你想在正文中发布数据,你应该使用@RequestBody

您需要创建一个如下所示的 POJO 类

public class GetDataRequest{
public String dataVariable;
}

然后在你的 Controller 中

@RequestMapping("/data/")
@ResponseStatus(code = HttpStatus.OK)
public @ResponseBody String getData( @RequestBody GetDataRequest request) {

return "The variable '" + request.dataVariable + "' was saved";
}

这应该有效

关于javascript - AngularJS $http POST 在 Java Controller 后端作为 null 变量接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60102141/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com