当 Jersey 检测到错误的 xml 时拦截 400 响应生成?

发布于 2024-12-28 15:46:37 字数 547 浏览 0 评论 0原文

我正在编写一个需要模拟第三方 RESTful 服务器的测试服务器,我正在使用 Jersey 来编写测试服务器。

所有请求都是带有 application/xml 有效负载的 POST,因此我一开始是这样的:

  @Path("GetUserDetails")
  @POST
  @Consumes(MediaType.APPLICATION_XML)
  public GetUserDetailsResp GetUserDetails(GetUserDetailsReq request) {
    ...
  }

当 XML 格式错误时,Jersey 很高兴地返回 400(GetUserDetailsReq 是一个 JAXB 对象),这不是我需要的。相反,我需要返回 200 和 XML 错误块。

我可以通过在方法中解组并使用 @Provider/ExceptionMapper 类来绕过 400,但这很笨拙。有没有办法向 Jersey 指定声明性返回 400 的替代方案?也许是 @Provider/ExceptionMapper 的变体?

TIA。

I'm writing a test server that needs to emulate a 3rd party RESTful server, I'm using Jersey to write the test server.

All of the requests are POST with application/xml payloads so I started off with:

  @Path("GetUserDetails")
  @POST
  @Consumes(MediaType.APPLICATION_XML)
  public GetUserDetailsResp GetUserDetails(GetUserDetailsReq request) {
    ...
  }

Jersey happily returns 400 when the XML is badly formatted (GetUserDetailsReq is a JAXB object), which is not what I need. Rather I need to return 200 and an XML error block.

I can get around the 400 by unmarshaling in the method and using an @Provider/ExceptionMapper class, but that's clunky. Is there anyway to specify to Jersey an alternative to returning the 400 declaratively? Maybe a variant on @Provider/ExceptionMapper?

TIA.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文