知識庫 / REST RSS 訂閱

設置 JAX-RS 響應體

Jakarta EE,REST
HongKong
5
03:52 AM · Dec 06 ,2025

1. 概述

為了簡化 Java 中 REST Web 服務及其客户端的開發,設計了一種標準且可移植的 JAX-RS API 實現,稱為 Jersey。

Jersey 是一個開源框架,用於開發支持 JAX-RS API 的 REST Web 服務,並作為 JAX-RS 的參考實現。

在本教程中,我們將探討如何設置 Jersey 響應體,並使用不同的媒體類型。

2. Maven 依賴

首先,需要在 <em pom.xml</em> 文件中包含以下依賴項:

<dependency>
    <groupId>org.glassfish.jersey.bundles</groupId>
    <artifactId>jaxrs-ri</artifactId>
    <version>3.1.1</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>3.1.1</version>
</dependency>

最新版本的 JAX-RS 可在 jaxrs-ri 中找到,而 Jersey 服務器可在 jersey-server 中找到。

3. 使用 Jersey 構建響應

當然,使用 Jersey 構建響應有多種方式,我們將在下面詳細介紹。

所有示例都是 HTTP GET 請求,我們將使用 curl 命令來測試資源。

3.1. Ok 文本響應

以下端點是一個簡單的示例,展示瞭如何將純文本作為 Jersey 響應返回:

@GET
@Path("/ok")
public Response getOkResponse() {

    String message = "This is a text response";

    return Response
      .status(Response.Status.OK)
      .entity(message)
      .build();
}

我們可以使用 curl 命令執行 HTTP GET 請求,以驗證響應:

curl -XGET http://localhost:8080/jersey/response/ok

此端點將返回響應如下:

This is a text response

當媒體類型未指定時,Jersey 將默認使用 text/plain。

3.2. 錯誤響應

錯誤也可以作為 Jersey 響應返回:

@GET
@Path("/not_ok")
public Response getNOkTextResponse() {

    String message = "There was an internal server error";

    return Response
      .status(Response.Status.INTERNAL_SERVER_ERROR)
      .entity(message)
      .build();
}

要驗證響應,我們可以使用 curl 發送 HTTP GET 請求:

curl -XGET http://localhost:8080/jersey/response/not_ok

錯誤信息將返回在響應中:

There was an internal server error

3.3. 純文本響應

我們可以返回簡單的純文本響應:

@GET
@Path("/text_plain")
public Response getTextResponseTypeDefined() {

    String message = "This is a plain text response";

    return Response
      .status(Response.Status.OK)
      .entity(message)
      .type(MediaType.TEXT_PLAIN)
      .build();
}

再次,我們可以使用 curl 命令執行 HTTP GET 請求,以驗證響應:

curl -XGET http://localhost:8080/jersey/response/text_plain

響應結果如下:

This is a plain text response

同樣的結果也可以通過使用 Produces  註解來實現,而不是在 Response 中使用 type() 方法。

@GET
@Path("/text_plain_annotation")
@Produces({ MediaType.TEXT_PLAIN })
public Response getTextResponseTypeAnnotated() {

    String message = "This is a plain text response via annotation";

    return Response
      .status(Response.Status.OK)
      .entity(message)
      .build();
}

我們可以使用 curl 進行響應驗證:

curl -XGET http://localhost:8080/jersey/response/text_plain_annotation

這是響應:

This is a plain text response via annotation

3.4. 使用 POJO 構建 JSON 響應

一個簡單的 Plain Old Java Object (POJO) 也可以用於構建 Jersey 響應。

我們有一個非常簡單的 Person POJO,如下所示,我們將使用它來構建響應:

public class Person {
    String name;
    String address;

    // standard constructor
    // standard getters and setters
}

Person POJO 現在可以用於將 JSON 作為響應體返回:

@GET
@Path("/pojo")
public Response getPojoResponse() {

    Person person = new Person("Abhinayak", "Nepal");

    return Response
      .status(Response.Status.OK)
      .entity(person)
      .build();
}

這個 GET 端點的運行可以驗證——通過以下 curl 命令:

curl -XGET http://localhost:8080/jersey/response/pojo

Person POJO 將會被轉換成 JSON 格式,並作為響應返回:

{"address":"Nepal","name":"Abhinayak"}

3.5. 使用簡單字符串的JSON響應

我們可以使用預格式化字符串來創建響應,並且這很容易實現。

以下端點是一個示例,展示瞭如何將JSON表示為字符串,作為Jersey響應返回:

@GET
@Path("/json")
public Response getJsonResponse() {

    String message = "{\"hello\": \"This is a JSON response\"}";

    return Response
      .status(Response.Status.OK)
      .entity(message)
      .type(MediaType.APPLICATION_JSON)
      .build();
}

可以通過使用 curl 進行 HTTP GET 請求來驗證響應:

curl -XGET http://localhost:8080/jersey/response/json

調用這個資源將返回一個 JSON:

{"hello":"This is a JSON response"}

同樣適用於其他常見媒體類型,如XML或HTML。我們只需要通知Jersey它是一個XML或HTML,通過使用MediaType.TEXT_XMLMediaType.TEXT_HTML,Jersey 就會處理剩下的工作。

4. 結論

在本文中,我們構建了多種媒體類型的Jersey (JAX-RS) 響應。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.