Java Spring Boot@RestController无响应
我从Spring和REST应用程序开始。目前,我正在自己开发一个应用程序,我陷入了困境 该应用程序就像标准的Spring Boot项目一样被划分。所有控制器都包含在Java Spring Boot@RestController无响应,java,jquery,rest,spring-boot,Java,Jquery,Rest,Spring Boot,我从Spring和REST应用程序开始。目前,我正在自己开发一个应用程序,我陷入了困境 该应用程序就像标准的Spring Boot项目一样被划分。所有控制器都包含在web包中。 其中一个“标准”控制器负责处理HTTP请求并返回HTML网站。我添加了一个REST控制器,该控制器应响应来自第一个控制器的POST请求,但我收到一个404错误 它在代码中是什么样子的 @RestController @RequestMapping("/users") public class UserRestContro
web
包中。
其中一个“标准”控制器负责处理HTTP
请求并返回HTML
网站。我添加了一个REST
控制器,该控制器应响应来自第一个控制器的POST
请求,但我收到一个404
错误
它在代码中是什么样子的
@RestController
@RequestMapping("/users")
public class UserRestController {
@Autowired
private UserService userService;
@RequestMapping(value = "/user", method = RequestMethod.POST, consumes = "application/json", produces = "application/json")
public ResponseEntity<?> getUser(@RequestParam("userId") String userId, Errors errors) {
AjaxUser response = new AjaxUser();
if (errors.hasErrors()) {
response.message = errors.getAllErrors().stream().map(x -> x.getDefaultMessage()).collect(Collectors.joining(","));
return ResponseEntity.badRequest().body(response);
}
response.setUser(userService.getUserById(Integer.getInteger(userId).intValue()));
return ResponseEntity.ok(response);
}
private class AjaxUser {
private User user;
private String message;
public void setUser(User user) {
this.user = user;
}
public void setMessage(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
@Override
public String toString() {
return "User { id:" + user.getId() + ", Name: " + user.getName() + ", surname: " + user.getSurname() + "}";
}
}
}
@RestController
@请求映射(“/users”)
公共类UserRestController{
@自动连线
私人用户服务;
@RequestMapping(value=“/user”,method=RequestMethod.POST,consumes=“application/json”,products=“application/json”)
公共响应属性getUser(@RequestParam(“userId”)字符串userId,错误){
AjaxUser响应=新的AjaxUser();
if(errors.hasErrors()){
response.message=errors.getAllErrors().stream().map(x->x.getDefaultMessage()).collect(收集器.加入(“,”);
返回ResponseEntity.badRequest().body(响应);
}
response.setUser(userService.getUserById(Integer.getInteger(userId.intValue()));
返回ResponseEntity.ok(响应);
}
私有类AjaxUser{
私人用户;
私有字符串消息;
公共void setUser(用户){
this.user=用户;
}
公共无效设置消息(字符串消息){
this.message=消息;
}
公共字符串getMessage(){
返回消息;
}
@凌驾
公共字符串toString(){
返回“User{id:+User.getId()+”,Name:“+User.getName()+”,姓氏:“+User.getnames()+”}”;
}
}
}
从.js文件中,我发送了一个ajax查询,该查询将触发rest控制器,代码如下:
function sendUserId(id) {
var user = {};
user["userId"] = id;
console.log("USER: ", user);
$.ajax({
type: "POST",
contentType: "application/json",
url: "/users/user",
data: JSON.stringify(user),
dataType: 'json',
cache: false,
timeout: 100000,
success: function (user) {
var json = "<h4>Ajax Response</h4><pre>"
+ JSON.stringify(user, null, 4) + "</pre>";
console.log("SUCCESS : ", user);
},
error: function (e) {
var json = "<h4>Ajax Response</h4><pre>"
+ e.responseText + "</pre>";
console.log("ERROR : ", e);
}
});
}
函数sendUserId(id){
var user={};
用户[“userId”]=id;
console.log(“用户:”,用户);
$.ajax({
类型:“POST”,
contentType:“应用程序/json”,
url:“/users/user”,
数据:JSON.stringify(用户),
数据类型:“json”,
cache:false,
超时:100000,
成功:功能(用户){
var json=“Ajax响应”
+stringify(user,null,4)+“”;
console.log(“成功:”,用户);
},
错误:函数(e){
var json=“Ajax响应”
+e.responseText+“”;
日志(“错误:”,e);
}
});
}
userId
由jQuery,console.log
显示现有和正确的值从html中获取
注意:存在一个标准用户@Controller
,负责显示用户列表,它工作正常,在向REST
控制器发送用户id时出现问题。它的行为就像REST
控制器不存在,浏览器返回404状态响应
。顺便说一句,页面使用Spring安全登录等
有人能帮忙吗
BR Konrad控制器正在查找js请求url中缺少的请求参数
控制器正在寻找js请求url中缺少的请求参数
您可以按如下所示的id获取用户:
@RequestMapping(value=“{id}”,method=RequestMethod.GET)
公共响应属性get(@PathVariable(“id”)int-id){
User=userService.findById(id);
if(user==null){
返回新的ResponseEntity(未找到HttpStatus.NOT_);
}
返回新的响应属性(用户,HttpStatus.OK);
}
所以您的rest入口点是/users/userid,例如:/users/1
从帖子中找到此项,您可以通过id获取用户,如下所示:
@RequestMapping(value=“{id}”,method=RequestMethod.GET)
公共响应属性get(@PathVariable(“id”)int-id){
User=userService.findById(id);
if(user==null){
返回新的ResponseEntity(未找到HttpStatus.NOT_);
}
返回新的响应属性(用户,HttpStatus.OK);
}
所以您的rest入口点是/users/userid,例如:/users/1
根据函数参数的问题,REST控制器应该使用字符串参数,然后将其解析为JSON对象,响应也应该是字符串。主题可以关闭,感谢大家的参与。基于函数参数的问题,REST控制器应该使用字符串参数,然后将其解析为JSON对象,响应也应该是字符串。主题可以结束,谢谢大家的参与。我检查了很多可能性,但仍然没有结果。你知道如何重建我的js文件吗?我检查了很多可能性,但仍然没有结果。你知道如何重建我的js文件吗?它应该发送请求参数?
/users/user?userId=1
@RequestMapping(value = "{id}", method = RequestMethod.GET)
public ResponseEntity<User> get(@PathVariable("id") int id) {
User user = userService.findById(id);
if (user == null) {
return new ResponseEntity<User>(HttpStatus.NOT_FOUND);
}
return new ResponseEntity<User>(user, HttpStatus.OK);
}