gpt4 book ai didi

java - Apache CXF - 处理操作中丢失的路径参数

转载 作者:行者123 更新时间:2023-12-01 11:41:33 26 4
gpt4 key购买 nike

我在我的项目中使用 apache cxf 来实现 Jax-rs。我有一个使用以下地址定义的服务: http://ip:port/myservice/ {操作}

考虑如下定义的该服务器的操作

@Override
@GET
@Path("operation1/{x}/{y}")
@Produces("application/xml")
public String operation1(@PathParam("x") final String x, @PathParam("y") final String y) {
return null;
}

在请求者使用 myservice 中未定义的某些操作名称发出请求的情况下,它将返回 404,这是预期的行为。但是,如果正确请求操作名称但路径参数未正确请求,我会得到相同的 404。如果请求中缺少任何 {x} 或 {y} 路径参数,我想创建一个正确的错误。但我找不到一种可以根据操作处理异常的优雅方法。在这种情况下,CXF 永远不会映射到操作。

我有这个异常映射器:

public class ClientExceptionMapper implements ExceptionMapper<ClientErrorException> {

@Override
public Response toResponse(final ClientErrorException exception) {
return Response.status(Response.Status.FORBIDDEN).entity("Invalid request").build();

}

}

它将处理所有错误情况,但它不提供有关异常中请求的 URL 的任何信息。在未定义路径参数的情况下,有没有一种方法可以针对不同的操作以不同的方式处理异常?例如:我想使用仅为操作1定义的一些自定义逻辑来处理以下请求。 http://ip:port/myservice/operation1/20

最佳答案

我看到针对您的情况有两种解决方案。
1)将路径参数移至查询参数。 @QueryParam
2)创建一个过滤器并将其映射到url operation1/*

关于java - Apache CXF - 处理操作中丢失的路径参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29486060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com