
如何使用 node.js 和 express 創(chuàng)建 rest api
與 Jakarta EE 的其他規(guī)范類似,使用 Jakarta REST API 只需將 Web API 的依賴項添加到項目中即可。這將為您提供編寫 Jakarta EE 應用程序所需的所有類、接口和注解。在本例中,Payara Server 提供了所有必要的代碼和實現(xiàn),因此您可以創(chuàng)建一個僅包含應用程序代碼的輕量級 WAR 文件。
如果您使用 Maven 作為構建工具,可以在 pom.xml
文件中添加以下依賴項:
jakarta.platform
jakarta.jakartaee-web-api
9.0.0
provided
對于 Gradle 用戶,可以在 build.gradle
文件中添加以下內(nèi)容:
providedCompile 'jakarta.platform:jakarta.jakartaee-web-api:9.0.0'
配置 Jakarta REST 框架通常只需定義觸發(fā) REST 引擎處理的 URL 部分。例如,以下 Java 類定義了應用程序的基本 URI:
@ApplicationPath("/api")
public class DemoApplication extends Application {
}
在上述代碼中,@ApplicationPath
注解指定了所有資源 URI 的基礎路徑。在這個例子中,/api
將成為所有端點的基礎 URL 部分。
在配置好 Jakarta REST API 后,我們可以創(chuàng)建一個簡單的 REST API 端點。以下是一個示例代碼:
@Path("/hello")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String sayHello() {
return "Hello World";
}
}
將上述代碼編譯、打包并部署到 Payara Server 或 Payara Micro 后,您可以通過以下命令訪問端點:
curl -v http://localhost:8080/rest/api/hello
返回結果如下:
Hello World
<主機名>
:運行 Payara Server 的計算機主機名。<端口>
:Payara Server 監(jiān)聽的端口,默認為 8080。<上下文根>
:部署應用程序的上下文路徑,默認為 WAR 文件名(不帶擴展名)。<REST 配置>
:@ApplicationPath
注解中定義的路徑。<資源配置>
:@Path
注解中定義的路徑。在編寫 API 端點時,解析客戶端請求的 URL 信息非常重要。以下示例展示了如何讀取 URL 的路徑參數(shù)和查詢參數(shù):
@Path("/hello/{name}")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String doGreeting(@PathParam("name") String name, @QueryParam("language") String language) {
return "Hello " + name + " in " + language;
}
}
在上述代碼中:
{name}
是路徑參數(shù),通過 @PathParam
注解映射到方法參數(shù)。language
是查詢參數(shù),通過 @QueryParam
注解映射到方法參數(shù)。例如,訪問以下 URL:
http://localhost:8080/rest/api/hello/Payara?language=en
將會調(diào)用 doGreeting("Payara", "en")
方法。
在生產(chǎn)環(huán)境中,JSON 是最常用的數(shù)據(jù)格式。以下示例展示了如何返回 JSON 數(shù)據(jù):
public class Person {
private String name;
private int age;
// 必須包含無參構造函數(shù)
public Person() {}
// Getter 和 Setter 省略
}
@Path("/person")
public class PersonResource {
@GET
@Produces(MediaType.APPLICATION_JSON)
public Person getPerson() {
Person person = new Person();
person.setName("Rudy");
person.setAge(42);
return person;
}
}
訪問以下 URL:
http://localhost:8080/rest/api/person
將返回如下 JSON 響應:
{
"name": "Rudy",
"age": 42
}
默認情況下,Jakarta REST 會自動序列化 Java 對象為 JSON 數(shù)據(jù)。
除了從服務器獲取數(shù)據(jù)外,您還可以通過 POST 請求向服務器發(fā)送數(shù)據(jù)。以下是一個示例:
@Path("/person")
public class PersonResource {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createPerson(Person person) {
// 處理接收到的 Person 數(shù)據(jù)
return Response.status(Response.Status.CREATED).build();
}
}
在上述代碼中:
@POST
注解指定了 HTTP 方法。@Consumes
注解指定了請求體的內(nèi)容類型。在實際開發(fā)中,您可能需要根據(jù)不同的業(yè)務邏輯返回不同的 HTTP 狀態(tài)碼。以下示例展示了如何實現(xiàn):
@Path("/number")
public class NumberResource {
@GET
@Path("/{value}")
public Response checkNumber(@PathParam("value") int value) {
if (value % 2 == 0) {
return Response.ok("Even number").build();
} else {
return Response.status(Response.Status.NOT_ACCEPTABLE).entity("Odd number").build();
}
}
}
在上述代碼中:
Jakarta REST API 提供了一種簡單高效的方式來構建 RESTful 服務。通過注解,您可以輕松配置 URL 路徑、HTTP 方法、請求和響應的內(nèi)容類型等。
本篇文章介紹了 Jakarta REST API 的基礎知識,包括如何配置 REST 引擎、創(chuàng)建簡單的端點、處理 JSON 數(shù)據(jù)以及控制 HTTP 狀態(tài)碼。在未來的文章中,我們將進一步探討 Jakarta EE 的其他功能,例如數(shù)據(jù)驗證和 CDI 服務注入。
原文鏈接: https://blog.payara.fish/getting-started-with-jakarta-ee-9-how-to-create-a-rest-api-with-jakarta-ee-9