从 Spring REST API 返回 HTTP 代码 200

新手上路,请多包涵

我想使用此代码接收带有值的 http 链接:

 @PostMapping(value = "/v1/notification")
public String handleNotifications(@RequestParam("notification") String itemid) {
    // parse here the values
    return "result successful result";
}

我如何返回 http 代码 200 成功响应?

还有例如,如果代码处理中存在代码异常,我该如何返回错误 404

原文由 Peter Penzov 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 644
2 个回答

您可以通过使用 @ResponseStatus 使用 HttpStatus.OK 注释您的方法来完成此操作(但它应该是 200 默认情况下),像这样

一些控制器

@PostMapping(value = "/v1/notification")
@ResponseStatus(HttpStatus.OK)
public String handleNotifications(@RequestParam("notification") String itemid) throws MyException {
    if(someCondition) {
       throw new MyException("some message");
    }
    // parse here the values
    return "result successful result";
}

现在,为了在处理特定异常时返回自定义代码,您可以创建一个完整的单独控制器来执行此操作(不过,您可以在同一个控制器中执行此操作)它从 ResponseEntityExceptionHandler 扩展并注释为 @RestControllerAdvice 它必须有一个方法来处理特定的异常,如下所示:

异常处理控制器

@RestControllerAdvice
public class ExceptionHandlerController extends ResponseEntityExceptionHandler {

    @ExceptionHandler(MyException.class)
    protected ResponseEntity<Object> handleMyException(MyException ex, WebRequest req) {
        Object resBody = "some message";
        return handleExceptionInternal(ex, resBody, new HttpHeaders(), HttpStatus.NOT_FOUND, req);
    }

}

原文由 lealceldeiro 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您使用弹簧:

 @PostMapping(value = "/v1/notification")
public ResponseEntity handleNotifications(@RequestParam("notification") String itemid) {
    // parse here the values
    return ResponseEntity.ok().build();
    //OR ResponseEntity.ok("body goes here");
}

原文由 Cristiano Bombazar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题