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

泽西ExceptionMapper不工作与Spring靴?

厉令
2023-03-14

我使用带有spring boot的jersey,我有一个异常映射器:

package org.smarter.providers;

import com.google.common.collect.ImmutableMap;
import org.smarter.exception.ApiException;

import javax.ws.rs.core.Response;
import javax.ws.rs.ext.Provider;

import java.util.Optional;

import static org.smarter.exception.UserException.UNAUTHORIZED;

@Provider
public class ExceptionMapper implements javax.ws.rs.ext.ExceptionMapper<ApiException> {

    @Override
    public Response toResponse(ApiException exception) {
        return Response.status(status(exception)).build();
    }

    private Integer status(ApiException exception) {
        return Optional.ofNullable(ImmutableMap.<String, Integer>builder()
                .put(UNAUTHORIZED, 401)
                .build()
                .get(exception.code()))
                .orElse(404);
    }
}

同样注册,并使用调试,我可以看到这个映射器被正确调用,但是无论使用junit测试还是手动测试,最终响应仍然返回404。

以下是测试:

when()
                .get("/users/current/memos/daily")
                .then()
                .statusCode(401);

然后在泽西岛配置中注册:

寄存器(ExceptionMapper.class)

我正在使用带有Spring靴的球衣,不知道如何解决这个问题。任何建议都将不胜感激。


共有1个答案

吉岳
2023-03-14
匿名用户

我可以看到这个映射器被正确调用,但最终响应仍然返回404

这可能是您的status()方法实现的问题。您确定<code>异常。code()返回401

顺便问一下,您是否需要使用<code>可选

private Integer status(ApiException exception) {
    if (exception.code() == 401) {
        return exception.code();
    } else {
        return 404;
    }
}

 类似资料:
  • 我将javax和jersey用于我的api应用程序(公开apiendpoint),我试图通过提供一个实现ExceptionMapper的提供者来捕获来自fasterXml的异常(在put和post调用时)。 我的问题是,在POST或PUT上,每当我发送错误的属性名称时,有时我的映射器会捕获异常,有时则不会。例如: > 运行我的应用程序一次- 再次运行我的应用程序(重启)- 我正在使用球衣2。x、

  • 我无法上传新泽西州的文件。使用泽西1.9。InputStream到达服务时为空。我尝试过将其作为普通表单提交和使用jQuery表单插件的AJAX提交,但结果都是一样的。也没有记录任何异常,这让它更加令人沮丧。 HTML表单 聚甲醛 Eclipse中的依赖层次结构显示mimepull.jar1.6也被引入。 剩下的服务 如果我添加@FormDataParam(“fileupload_name”)Fo

  • 我是新来的泽西框架。只是想知道使用异常映射器的优势是什么。如果我想把任何错误抛给其他消费者,我可以在方法中执行以下操作,Response.status(502)。实体(“注册期间服务器错误”)。build();为什么建议使用异常映射器,请帮助我理解?

  • 错误: 找不到媒体type=application/xml、type=class com.example.DemoRest2.Employee、genericType=class com.example.DemoRest2.Empayee的MessageBodyWriter。 我想返回Employee的对象。类,但获取上述错误。我正在使用@XmlRootElement注释。然而,当我以字符串格式返

  • 编辑:这是ackson jaxrs-base早期版本中的一个问题,已在jackson-jaxrs-base-2.8中解决。https://github.com/FasterXML/jackson-jaxrs-providers/issues/22 我正在努力解决这个问题,只有mapper例外。我想映射com的所有子级。fasterxml。杰克逊。果心JsonProcessingException在

  • 我正在尝试使用JAX-RS(Jersey)构建JSON RESTful Webservice。我也在使用Maven构建应用程序。 我的第一个方法是 pom之后。xml- 所以我补充道 到我的pom文件。其他lib文件(例如jackson-cors-asl-1.7.1.jar、jackson-jaxrs-1.7.1.jar、jaxb impl,…)也可以在生成的war文件中找到//编辑:它还下载st