java - 如何在webflux ServerHttpRequest中获取原始url路径

标签 java spring spring-mvc

如何获取RequestMapping中写入的绝对URL?

下面给出的代码:

@RequestMapping("/user/{id}") 公共(public)用户获取(){ 字符串 url = "/user/{id}"; };

最佳答案

ServerHttpRequest 请求 = (ServerHttpRequest) Exchange.getRequest();

使用request.getURI().getPath()我能够获取API路径。

 @Component
    public class ServerAuthEntryPointJwt implements ServerAuthenticationEntryPoint {
    
        private static final Logger logger = LoggerFactory.getLogger(ServerAuthEntryPointJwt.class);
    
        @Override
        public Mono<Void> commence(ServerWebExchange exchange, AuthenticationException ex) {
            // TODO Auto-generated method stub
            logger.error("Unauthorized error: {}", ex.getMessage());
    
            ServerHttpRequest request = (ServerHttpRequest) exchange.getRequest(); 
            ServerHttpResponse response = (ServerHttpResponse) exchange.getResponse();
    
    //    response.set(MediaType.APPLICATION_JSON_VALUE);
            response.setStatusCode(HttpStatus.UNAUTHORIZED);
    
            final Map<String, Object> body = new HashMap<>();
            body.put("status", HttpStatus.UNAUTHORIZED);
            body.put("error", "Unauthorized");
            body.put("message", ex.getMessage());
            body.put("path", request.getURI().getPath());
            response.getHeaders().add(HttpHeaders.CONTENT_TYPE, "application/json");
            JSONObject fadfa = new JSONObject(body);
            byte[] bytes = fadfa.toString().getBytes(StandardCharsets.UTF_8);
            DataBuffer buffer = exchange.getResponse().bufferFactory().wrap(bytes);
            return exchange.getResponse().writeWith(Flux.just(buffer));
    
        }
    
    }

回应:

{
        "path": "/admin-service/conversation-management/conversations",
        "error": "Unauthorized",
        "message": "Not Authenticated",
        "status": "UNAUTHORIZED"
    }

关于java - 如何在webflux ServerHttpRequest中获取原始url路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58678562/

相关文章:

java - 如何将 "attach"赋给一个对象

java - 如何对齐 JTextPane 中选定的文本?

web-services - 如何在自定义 cxf 拦截器中使用 Spring Autowired?

javascript - 使用ajax将值放入spring MVC中的 Bootstrap 模式弹出字段值中以从数据库获取数据

java - 如何使用 Java 配置在 Google OAuth2 AccountChooser 中设置托管域参数?

java - 亚马逊 sqs 抛出异常连接重置

java - 如何在我的 SomethingManager 类的实现之间切换?

java - Spring-Boot 应用程序无法正确构建

java - 如何选择 Thymeleaf 片段内的子元素位置?

java - 如何实现STOW-RS,WADO-RS和QIDO-RS?