当前位置: 首页 > 知识库问答 >
问题:

如何在Spring中返回http响应

向弘懿
2023-03-14

我想用响应替换http异常,也就是说,我使用我想返回的responseentity,例如409如果没有通过名称找到用户,509如果没有通过邮件找到用户,我可以确定responseentity中的错误号及其描述吗?如果有,可以举例说明吗?

@RequestMapping(value = "/change", method = RequestMethod.POST)
public void change(@RequestBody User user) throws Exception {
    UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    User userByUsername = userService.findUserByUsername(userDetails.getUsername());
    if (userByUsername == null) {
        throw new Exception("Пользователь не найден");
        //TODO: return ResponseEntity code 409 if userByusername not found
    }

    user.setId(userByUsername.getId());
    if (user.getPassword() == null) {
        user.setPassword(userByUsername.getPassword());
    }
    user.setRoles(userByUsername.getRoles());
    userService.save(user);
}

共有1个答案

鱼宜
2023-03-14
public ResponseEntity<Object> change(@RequestBody User user) throws Exception {
    UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    ErrorResponse errorResponse = new ErrorResponse(HttpStatus.CONFLICT, "not found user by username",409);
    User userByUsername = userService.findUserByUsername(userDetails.getUsername());
    if (userByUsername == null) {
        return new ResponseEntity<>(errorResponse, new HttpHeaders(), errorResponse.getStatus());
    }
    user.setId(userByUsername.getId());
    if (user.getPassword() == null) {
        user.setPassword(userByUsername.getPassword());
    }
    user.setRoles(userByUsername.getRoles());
    userService.save(user);
    return null;
}

public class ErrorResponse {

private HttpStatus status;
private String message;
private Integer errors;

public ErrorResponse(HttpStatus status, String message, Integer errors) {
    super();
    this.status = status;
    this.message = message;
    this.errors = errors;
}

public HttpStatus getStatus() {
    return status;
}

}

 类似资料:
  • 我希望在spring boot中返回类似以下内容的json响应: 我的RestController如下所示 但我得到的反应是这样的

  • 我使用spring MVC来创建一个简单的JSON API,使用基于的方法,如下所示。(我已经有一个直接生成JSON的服务层。) 问题是,在给定的场景中,什么是响应HTTP 400错误的最简单、最干净的方法? 我确实遇到过这样的做法: ...但我不能在这里使用它,因为我的方法的返回类型是String,而不是ResponseEntity。

  • 我使用Spring MVC作为一个简单的JSON API,使用基于的方法,如下所示。(我已经有一个直接生成JSON的服务层。) 在给定的场景中,最简单、最干净的HTTP 400错误响应方式是什么? 我确实遇到了这样的方法: ...但是我不能在这里使用它,因为我的方法的返回类型是字符串,而不是响应实体。

  • 问题内容: 将编码的字符串添加到http共振似乎将某些字符替换为!F(MISSING)。如何预防? 输出: {“ encodedText”:“ M6c8RqL61nMFy%!F(MISSING)hQmciSYrh9ZXgVFVjO”} 码: 问题答案: 您正在使用转义值“ M6c8RqL61nMFy%2FhQmciSYrh9ZXgVFVjO”作为以下行上的格式字符串: Fprintf尝试格式化动词

  • 问题内容: 例如,此URL: 应该返回一个类型的响应。我有两个静态图片, 如果type为1,则应该返回,否则返回。在烧瓶中怎么做? 问题答案: 你使用类似 发送回或,具体取决于类型查询参数。有关更多信息,请参见函数和对象的文档。

  • 我有一个服务,返回一个可观察到的,做一个超文本传输协议请求到我的服务器,并获得数据。我想使用这些数据,但我总是最终得到。有什么问题? 服务: 组成部分: 我检查了如何从异步调用返回响应?发布,但找不到解决方案