- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
场景如下:我创建了以下自定义响应异常,以触发 401 Http 状态:
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
public class HttpUnauthorizedException extends RuntimeException {
}
使用异常的 Controller :
@Controller
public UserController {
@RequestMapping(value = "api/user")
@ResponseBody
public String doLogin(
@RequestParam(value = "username", required = false) String username, @RequestParam(value = "password", required = false) String password) {
if(userLoggedIn(String username, String password)) {
return "OK";
}
else {
throw new HttpUnauthorizedException();
}
}
...
}
现在,当我尝试访问 Controller 以查看 401 异常时,服务器改为触发 Http 错误代码 500。但有趣的是,当我尝试使用 HttpStatus.NOT_FOUND
它确实有效时,服务器触发 404。我在这里遗漏了什么吗?
提前致谢:-)
最佳答案
首先 throw new HttpUnauthorizedException();
然后你可以在一个有@ControllerAdvice
注解的普通 Controller 上捕获它
@ControllerAdvice // To Handle Exceptions
public class ExceptionController {
//// ...........
@ExceptionHandler({HttpUnauthorizedException.class})
@ResponseBody
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
Map<String, String> unauthorizedAccess(Exception e) {
Map<String, String> exception = new HashMap<String, String>();
log.error("unauthorized Access to the API: " + e.getMessage(), e);
exception.put("code", "401");
exception.put("reason", e.getMessage());
return exception;
}
}
关于java - 抛出 HttpStatus.UNAUTHORIZED 的 Spring Controller 会触发 500 Http 错误而不是 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22296448/
我即将实现一个 REST api。我想知道 HttpStatus.OK 和 HttpStatus.ACCEPTED 之间有什么区别: return new ResponseEntity(u, Http
我想处理服务器错误的特殊情况,即HttpStatus代码599。但是,这个代码没有在Spring内置的HttpStatus类中定义。对于 HttpStatus 类中定义的所有其他代码,我曾经通过以下代
我想返回,响应中的 555 状态代码。 我检查了spring框架的ResponseEntity类。 我可以看到所有构造函数仅接受 HttpStatus 枚举中的特定代码。这可以通过以下方式实现, re
我正在使用拦截器来转换我的响应。我想设置HttpStatus在里面,但我现在使用的代码不起作用。 import { CallHandler, ExecutionContext, NestInterce
假设我开发了一些 rest api。我有网络层( Controller )和服务层(模型)。在服务层使用 HttpStatus 代码抛出异常是好习惯吗? 有人会说,那个模型应该对web层一无所知,不应
我正在尝试使用 DownloadData 方法使用 RestSharp 下载文件(图像) var client = new RestClient(baseUrl); var request = new
我有一个 spring 集成 http 入站网关。我想在不同的使用情况下返回特定的 http 状态代码。 有没有办法在响应中指定 httpStatus ??? 我尝试使用 异常类型路由器,其中每个异常
我想测试当我调用这样的方法时是否会引发自定义异常: private MyObject queryDatabase(String request, String end){ HttpEntity
我有一个应用程序,我在其中使用 ResponseEntity 从我的 Controller 返回动态 HttpStatus 代码 return new ResponseEntity("Unrecogn
我在异常中使用 Spring 注释 @ResponseStatus @ResponseStatus(value=HttpStatus.UNAUTHORIZED) public class Unauth
我创建了一个 AppErrorController,它扩展了 Boot 的 ErrorController 以处理 status500 错误。示例: @Controller public class
我已经实现了一个符合 Snowflake's Asynchronous External Function. 的 API 在我们开发的系统中,我们使用 AWS API 网关、Lambda 函数和第三方
我使用spring开发rest服务很长时间了,到目前为止我返回http状态代码的方法是这样的: @RequestMapping(value = "/sth") public void
当端点调用失败时,我尝试返回不同的错误代码,并使用 HttpStatuses 作为响应。 现在我正在测试端点定义: @PostMapping("shredding_type/update")
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
我正在使用 Spring Boot 构建应用程序。此应用程序是分布式的,这意味着我有多个相互调用的 API。 我的一项底层服务与数据库交互并响应请求的数据。如果发出对不存在的 ID 的请求,我将使用
这个问题在这里已经有了答案: WEBrick: RequestURITooLarge: should I update or use a different server? (3 个答案) 关闭 5
我正在使用 spring MVC 创建 Rest Web 服务。并希望发送 213 代码状态作为响应。但此代码不存在于类 org.springframework.http.HttpStatus 中,并
使用org.apache.http与 org.apache.httpcomponents httpclient 4.5.2 描述端点上的 swagger 配置(不过,这不仅仅是库
我有一个 spring mvc Controller ,它生成一个“application/pdf”来下载生成的 pdf。我想始终返回 pdf,并根据某些条件返回不同的 HTTP 代码。 我尝试返回
我是一名优秀的程序员,十分优秀!