返回自定义对象并控制 JAX-RS 中的响应代码

发布于 2024-12-27 06:15:25 字数 504 浏览 1 评论 0原文

我在 Web 应用程序中使用 JAX-RS 返回我自己的对象。 我想继续这样做,但我想设置HTTP响应代码(例如401表示未经授权,等等)。 从我发现的信息看来,我必须返回类型 Response 而不是我的自定义对象。 这是正确的吗?

我当前的代码(简化) - 当 MyReponse 是 Jaxb 知道如何处理的对象时:

@POST
@Produces({MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON})
public MyResponse RegisterUser (
        @FormParam("userName") String userName,
        @FormParam("password") String password) {
    // add user logic
    return new MyResponse(....<params to ctor...);
  }

I'm using JAX-RS in my web application to return my own object.
I want to keep doing it, but I want to set the HTTP response code (e.g. 401 for unauthorized, etc.).
From the information I've found it seems like I have to return the type Response and not my custom object.
Is that correct?

My current code (simplified) - when MyReponse is an object that Jaxb knows how to deal with:

@POST
@Produces({MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON})
public MyResponse RegisterUser (
        @FormParam("userName") String userName,
        @FormParam("password") String password) {
    // add user logic
    return new MyResponse(....<params to ctor...);
  }

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

伪装你 2025-01-03 06:15:25

是的你是对的。

您需要使用类似的内容:

@POST
@Produces({MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON})
public Response RegisterUser (
    @FormParam("userName") String userName,
    @FormParam("password") String password) {
    // add user logic
    return Response.status(401).entity(new MyResponse(...)).build();
}

请参阅 http://jersey .java.net/nonav/documentation/latest/jax-rs.html#d4e355(和其他章节)以获取其他有用的信息。

Yes, you are right.

You'll need to use something like:

@POST
@Produces({MediaType.APPLICATION_XML , MediaType.APPLICATION_JSON})
public Response RegisterUser (
    @FormParam("userName") String userName,
    @FormParam("password") String password) {
    // add user logic
    return Response.status(401).entity(new MyResponse(...)).build();
}

see http://jersey.java.net/nonav/documentation/latest/jax-rs.html#d4e355 (and other chapters) for additional useful information.

你另情深 2025-01-03 06:15:25

您可以扩展 Response 类,并在重写 getStatus() 方法时返回自定义状态。

You can extend Response class and return your custom status when you override getStatus() method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文