gpt4 book ai didi

java - Spring Rest Controller POST 请求不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 12:32:56 24 4
gpt4 key购买 nike

我有一个休息 Controller :

@RestController
@RequestMapping("/query")
public class QueryController {

@Autowired
private QueryService queryService;

@RequestMapping(value = "/select", method = RequestMethod.POST)
public @ResponseBody QueryResultDTO executeQuery(@RequestBody QueryDTO queryDTO) {
try {
QueryResultDTO queryResultDTO = queryService.executeQuery("select * from employees");
queryResultDTO.setSuccessful(true);
return queryResultDTO;
} catch (SQLException e) {
QueryResultDTO queryResultDTO = new QueryResultDTO();
queryResultDTO.setSuccessful(false);
queryResultDTO.setErrorMessage(e.getMessage());
return queryResultDTO;
}
}
}

我尝试从 AngularJS Controller 发送 POST 请求:

app.controller("AppCtrl",function($scope,$http) {
var app = this;

$scope.execute= function () {
$http({
url: '../query/select',
method: "POST",
data: { 'message' : $scope.queryText }
})
.then(function(response) {
$scope.queryResult = response.data;
console.log($scope.queryResult);
console.log($scope.queryText)
},
function(response) {
console.log(response);
});
}

});

但是它不起作用。我在 Spring Controller 中的 executeQuery 函数甚至没有被调用。

但是当我将 RequestMethod 更改为 GET 时,它可以正常工作。

@RestController
@RequestMapping("/query")
public class QueryController {

@Autowired
private QueryService queryService;

@RequestMapping(value = "/select", method = RequestMethod.GET)
public @ResponseBody QueryResultDTO executeQuery() {
try {
QueryResultDTO queryResultDTO = queryService.executeQuery("INSERT INTO employee VALUES (7,'dupa')");
queryResultDTO.setSuccessful(true);
return queryResultDTO;
} catch (SQLException e) {
QueryResultDTO queryResultDTO = new QueryResultDTO();
queryResultDTO.setSuccessful(false);
queryResultDTO.setErrorMessage(e.getMessage());
return queryResultDTO;
}
}
}

在 Angular Controller 中:

app.controller("AppCtrl",function($scope,$http) {
var app = this;

$scope.execute= function () {
$http({
url: '../query/select',
method: "GET",
data: { 'message' : $scope.queryText }
})
.then(function(response) {
$scope.queryResult = response.data;
console.log($scope.queryResult);
console.log($scope.queryText)
},
function(response) {
console.log(response);
});
}

});

我的主要问题是我想将一些数据发送到我的 Spring Controller ,然后发送 JSON 以响应我的 Angular Controller 。 Whith GET 方法响应工作完美,但是当我使用 POST 时,甚至不会调用 Controller 方法。

编辑:

我的QueryDTO类很简单:

public class QueryDTO {

private String message;

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}
}

还有一些 DEBUG 级别的日志:

2016-06-06 09:28:23.697 DEBUG 7504 --- [nio-8090-exec-2] o.s.web.servlet.DispatcherServlet        : Null ModelAndView returned to DispatcherServlet with name 'dispatcherServlet': assuming HandlerAdapter completed request handling
2016-06-06 09:28:23.698 DEBUG 7504 --- [nio-8090-exec-2] o.s.web.servlet.DispatcherServlet : Successfully completed request

最佳答案

尝试在您的方法中添加 consumes=MediaType.APPLICATION_JSON_VALUE

@Transactional
@RequestMapping(value = "/userlogincheck", method = RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody void userLoginCheck(@RequestBody UserImpl user, HttpServletRequest request, HttpServletResponse response) throws JSONException, IOException {
JSONObject json = new JSONObject();
try {
String email=user.getEmail();
Long userId=user.getId();
User loginData = accountService.userLoginCheck(email,userId);
if(loginData==null)
{
json.put("status", "FAILURE");
json.put("message", "user does not exist");
json.put("nextPage", "signIn");
}
else
{
json.put("status", "SUCCESS");
json.put("nextPage", updateState);
}
}
catch(Exception e) {
logger.info(e.getMessage());
}
response.setContentType("application/json;charset=UTF-8");
logger.info("response======" + json.toString());
PrintWriter out = response.getWriter();
out.write(json.toString());
}

关于java - Spring Rest Controller POST 请求不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37648212/

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