點擊屏幕底部的“Generate”(生成)按鈕。這將下載一個包含項目模板的 zip 文件。將 zip 文件解壓到您選擇的文件夾中。

打開 Eclipse IDE,轉(zhuǎn)到“File”(文件)菜單并選擇“Import”(導(dǎo)入)。在“Maven”下,選擇“Existing Maven Projects”(現(xiàn)有 Maven 項目)。點擊“Next”(下一步)。

瀏覽解壓后的 zip 文件目錄,選擇包含 pom.xml 文件的根文件夾。點擊“Finish”(完成)將項目導(dǎo)入到 Eclipse IDE 中。

探索 Spring Boot 中的文件結(jié)構(gòu)

在文件資源管理器中,您將會看到以下文件夾:

Eclipse 項目資源管理器

請注意,有一個名為?EmployeeApplication.java?的文件,這是啟動 Spring Boot 應(yīng)用程序的入口點。

這個文件包含了以下 Spring Boot 注解的功能:

將子包添加到項目中

我們首先需要了解Spring Boot應(yīng)用程序的主要結(jié)構(gòu)層。以下是為項目中的每個結(jié)構(gòu)層創(chuàng)建子包的步驟:

要為上述組件創(chuàng)建單獨的包,請在Eclipse中右鍵點擊com.example.employee包,然后選擇New,接著選擇Package。在彈出的新窗口中,在Name字段輸入com.example.employee.repository,然后點擊Finish

新套餐詳情

這將為存儲庫組件創(chuàng)建一個文件夾。請對以下軟件包重復(fù)上述步驟:

在為每個子包中的應(yīng)用程序編寫代碼之前,讓我們在Spring Boot中創(chuàng)建表并配置MySQL連接詳細信息,這些信息將在本教程中使用。

在 Spring Boot 中創(chuàng)建表并配置 MySQL 詳細信息

打開 MySQL Workbench。在主頁中,單擊 MySQL 連接旁邊的 [+] 圖標。

添加新連接

此時將打開 Setup New Connection 彈出窗口。輸入 “spring-boot-test” 作為連接名稱。在 Default Schema (默認架構(gòu)) 中,輸入 “employee-schema”。

設(shè)置新連接

點擊 OK。將在主頁上創(chuàng)建新的 MySQL 連接。

MySQL 工作臺

要打開連接,請點擊主頁上的“spring-boot-test”。在“employee-schema”下,右鍵點擊“Tables”并選擇“Create Table”。

添加四列:emp_id、first_name、last_name、email_id。對于emp_id,請勾選“Primary Key”、“Not Null”和“Auto Increment”選項。您的表格應(yīng)該類似于下圖所示:

創(chuàng)建表


點擊“Apply”然后點擊“Finish”。

要在應(yīng)用程序中連接到這個MySQL實例,必須向Spring Boot提供數(shù)據(jù)庫的詳細信息。打開application.properties文件,并添加以下內(nèi)容:

spring.datasource.url = jdbc:mysql://127.0.0.1:3306/employee-schema

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect

有了這些配置信息,Spring Boot將自動為你配置數(shù)據(jù)庫連接。

現(xiàn)在,表已經(jīng)準備就緒,我們可以開始為應(yīng)用程序的各個層添加代碼。

創(chuàng)建 Java 模型類

返回到Eclipse IDE,右鍵點擊com.example.employee.model包,選擇創(chuàng)建新類的選項。

將會出現(xiàn)一個包含類詳細信息的新彈出窗口。在“Name”(名稱)字段中,輸入“Employee”。點擊“Finish”。復(fù)制再試一次分享

創(chuàng)建新的 Java 類

將內(nèi)容添加到文件中:

package com.example.employee.model;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "employee")
public class Employee {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="emp_id")
private Long id;

@Column(name="first_name")
private String firstName;

@Column(name="last_name")
private String lastName;

@Column(name="email_id")
private String emailId;
}

讓我們分解文件中的代碼:

有四種主要的主鍵生成策略,如下所述:

此外,你將為上述實例變量創(chuàng)建 setter 和 getter 方法。在 Eclipse 中自動生成這些方法,請右鍵單擊 Employee.java 文件并選擇 Source(源)。選擇 Generate Getters and Setters(生成 Getter 和 Setter)。點擊 Select All,然后點擊 Generate 按鈕。

在下一節(jié)中,您將創(chuàng)建存儲庫類,該類將使用此模型類從數(shù)據(jù)庫中訪問員工詳細信息。

創(chuàng)建 repository 類

在 com.example.employee.repository 包下創(chuàng)建一個名為 EmployeeRepository 的類,并將代碼替換為以下內(nèi)容:

package com.example.employee.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import com.example.employee.model.Employee;

@Repository
public interface EmployeeRepository extends JpaRepository<Employee, Long> {

}

@Repository?注解表明該類是一個數(shù)據(jù)倉庫,負責(zé)包含 CRUD(創(chuàng)建、讀取、更新、刪除)操作。CRUD 是數(shù)據(jù)庫操作的四個基本功能。

EmployeeRepository 擴展了 JpaRepository 接口。在將 JpaRepository 應(yīng)用于您的存儲庫時,您需要傳遞兩個參數(shù):第一個是您希望該存儲庫管理的模型類的類型,第二個是主鍵的數(shù)據(jù)類型。

Spring Data JPA 提供的 JpaRepository 接口使倉庫類能夠檢索、更新和刪除 employee 表中的記錄。

該接口定義了一系列方法,如?save()、findAll()?和?delete(),用于對數(shù)據(jù)庫執(zhí)行操作。這些方法的實現(xiàn)由名為?SimpleJpaRepository?的默認實現(xiàn)類提供。通過調(diào)用這些方法,您可以避免為這些基本操作編寫自定義查詢。

在下一節(jié)中,您將創(chuàng)建一個服務(wù)類,該類將調(diào)用 JpaRepository 實現(xiàn)中的方法。

創(chuàng)建 service 類

服務(wù)組件包含了業(yè)務(wù)邏輯。在 com.example.employee.service 包下,創(chuàng)建一個名為 EmployeeService 的類,并將以下代碼填入其中:

package com.example.employee.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.employee.model.Employee;
import com.example.employee.repository.EmployeeRepository;
import java.util.List;

@Service
public class EmployeeService {

@Autowired
EmployeeRepository empRepository;
}

在Spring框架中,@Autowired?注解被用來實例化類對象,實現(xiàn)依賴注入。

當一個類被@Repository、@Component等注解標記時,Spring就有能力為這個類創(chuàng)建一個Bean。隨后,在其他需要使用這個Bean的類中,可以通過@Autowired注解來自動注入這個Bean。這個過程被稱為Spring中的依賴注入。此外,@ComponentScan注解允許Spring在指定的包中查找并注冊這些被注解標記的類作為Bean。

現(xiàn)在,我們將在服務(wù)層中創(chuàng)建一些方法。這些方法會調(diào)用EmployeeRepository中的方法,而EmployeeRepositoryJpaRepository的一個擴展。

接下來,您需要在EmployeeService類中的EmployeeRepository empRepository成員變量之后,添加以下這些方法:

// CREATE 
public Employee createEmployee(Employee emp) {
return empRepository.save(emp);
}

// READ
public List<Employee> getEmployees() {
return empRepository.findAll();
}

// DELETE
public void deleteEmployee(Long empId) {
empRepository.deleteById(empId);
}

createEmployee 方法調(diào)用 empRepository.save() 函數(shù),該函數(shù)在保存到數(shù)據(jù)庫后會返回 Employee 對象。傳遞給 createEmployee 方法的參數(shù)是一個包含所有要保存細節(jié)的 Employee 模型。

類似地,getEmployees()deleteEmployee() 分別調(diào)用了由 Repository 擴展的 JpaRepository 方法。

要更新員工詳細信息,請在deleteEmployee(Long empId)方法后添加以下函數(shù):

// UPDATE
public Employee updateEmployee(Long empId, Employee employeeDetails) {
Employee emp = empRepository.findById(empId).get();
emp.setFirstName(employeeDetails.getFirstName());
emp.setLastName(employeeDetails.getLastName());
emp.setEmailId(employeeDetails.getEmailId());

return empRepository.save(emp);
}


讓我們來分解上述的 updateEmployee 方法:

創(chuàng)建控制器類

在com.example.employee.controller包下創(chuàng)建一個名為EaseController的類,并將代碼替換為以下內(nèi)容:

package com.example.employee.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.example.employee.model.Employee;
import com.example.employee.service.EmployeeService;

@RestController
@RequestMapping("/api")
public class EmployeeController {
@Autowired
EmployeeService empService;

}

@RequestMapping 注解定義了在此控制器中創(chuàng)建的所有 REST API 的基礎(chǔ) URL。這個基礎(chǔ) URL 后面會跟上為每個控制器方法提供的具體 REST 端點。

@RestController 注解在類級別上是以下兩個注解的組合:

EmployeeService 是通過 @Autowired 注解實現(xiàn)依賴注入的,這樣它就可以在控制器中被使用了。

創(chuàng)建方法以執(zhí)行 CRUD 操作

在進一步實現(xiàn)控制器中的 REST API 請求之前,我們先來概述一下這些 REST API 的基本結(jié)構(gòu):

為了創(chuàng)建一個新的雇員記錄,我們需要定義一個 POST 方法,其訪問的端點為?api/employees。這個 POST 請求的請求體將包含從客戶端發(fā)送到 API 的數(shù)據(jù),這些數(shù)據(jù)代表要保存到數(shù)據(jù)庫中的新員工信息。這些數(shù)據(jù)通常以 JSON 格式發(fā)送,其結(jié)構(gòu)可能類似于以下示例:

{
"firstName": "Joe",
"lastName": "B",
"emailId": "example@gmail.com"
}

要獲取員工的詳細信息,我們需要使用端點 api/employees 并定義一個 GET 方法。

要更新員工的詳細信息,我們可以使用端點 api/employees/{empId} 并創(chuàng)建一個 PUT HTTP 方法。其中,{empId} 是一個路徑參數(shù),代表要更新的員工的 ID。在發(fā)送到 API 的請求體中,我們需要包含更新后的員工詳細信息,其格式通常如下所示:

{
"firstName": "Joe",
"lastName": "B",
"emailId": "newemail@gmail.com"
}

要刪除一個員工,需要創(chuàng)建一個HTTP方法,使用端點 /emp/{empId},其中 {empId} 是要刪除其數(shù)據(jù)的員工ID。

讓我們?yōu)檫@四個REST API創(chuàng)建方法。將以下方法添加到 siteServiceempService 之后的 siteController 類中:

@RequestMapping(value="/employees", method=RequestMethod.POST)
public Employee createEmployee(@RequestBody Employee emp) {
return empService.createEmployee(emp);
}

讓我們分解一下新添加的代碼:

類似地,您將為所有其他REST API添加代碼。將這些方法添加到 CableController 類的 createEmployee 方法之后:

@RequestMapping(value="/employees", method=RequestMethod.GET)
public List<Employee> readEmployees() {
return empService.getEmployees();
}

@RequestMapping(value="/employees/{empId}", method=RequestMethod.PUT)
public Employee readEmployees(@PathVariable(value = "empId") Long id, @RequestBody Employee empDetails) {
return empService.updateEmployee(id, empDetails);
}

@RequestMapping(value="/employees/{empId}", method=RequestMethod.DELETE)
public void deleteEmployees(@PathVariable(value = "empId") Long id) {
empService.deleteEmployee(id);
}

請注意,有些方法使用了@PathVariable注解,這表示REST API端點包含了一個路徑參數(shù)。@PathVariable注解會將端點URL中指定的路徑變量值映射到Java方法的對應(yīng)參數(shù)上。

構(gòu)建 Spring Boot 應(yīng)用程序

在正式開始構(gòu)建之前,您可以參考以下GitHub存儲庫作為參考。

在Eclipse的Project Explorer中,右鍵點擊employee項目文件夾,選擇“Run As”,然后再選擇“Maven build…”來運行構(gòu)建過程。

maven 構(gòu)建

此時將打開 Edit Configuration 彈出窗口。在 Goals 中鍵入 spring-boot:run。

Spring Boot Run 命令

轉(zhuǎn)到 Environment 選項卡,然后單擊 Add。將打開 New Environment Variable (新建環(huán)境變量) 彈出窗口。

在 Name 字段中,輸入 “spring.datasource.username”。對于 Value (值),輸入您的 MySQL 用戶名。單擊 OK。

添加新的環(huán)境變量

同樣,添加一個新的環(huán)境變量,在 Name 中為 “spring.datasource.password”,在 Value 中加入你的 MySQL 密碼。單擊 Apply (應(yīng)用),然后單擊 Run(運行)。

應(yīng)用程序現(xiàn)在將開始構(gòu)建。成功的構(gòu)建將在控制臺上顯示以下內(nèi)容:

Spring Boot 構(gòu)建

如果您查看控制臺上的最后幾行輸出,它會顯示應(yīng)用程序已經(jīng)在默認的8080端口上開始運行。如果這個端口被占用,Spring Boot會自動尋找并使用其他可用的端口。

當您在瀏覽器中訪問https://localhost:8080時,可能會看到一個默認的“Whitelabel Error Page”,這是因為還沒有配置任何特定的首頁或路由。

接下來,您將學(xué)習(xí)如何測試四個CRUD(創(chuàng)建、讀取、更新、刪除)API。

測試 REST API

Postman是一個流行的應(yīng)用程序,它可以幫助您開發(fā)、測試和記錄API。如果您還沒有創(chuàng)建Postman的免費賬戶,建議您注冊一個。

在Postman中,您可以創(chuàng)建一個工作區(qū),這個工作區(qū)可以用于與團隊成員一起協(xié)作處理項目。每個工作區(qū)可以包含一個或多個集合,集合就像是一個包含了多個API定義的文件夾。

以下是在Postman中創(chuàng)建工作區(qū)的步驟:

  1. 打開Postman應(yīng)用程序。
  2. 在界面頂部選擇“工作區(qū)”下拉列表。
  3. 點擊“新建工作區(qū)”來創(chuàng)建一個新的工作區(qū)。
  1. 請輸入工作區(qū)的名稱,例如“Spring Boot REST API Workspace”。
  2. 在“Visibility”(可見性)部分,您可以選擇工作區(qū)是對團隊成員可見還是僅對自己可見。您可以根據(jù)本文的需求選擇任意一個選項。
  3. 點擊左下角的“Create Workspace”按鈕。復(fù)制再試一次分享
新工作區(qū)配置

要創(chuàng)建收藏集,請單擊左側(cè)面板中的 Create new Collection 圖標。

新系列 Postman

單擊產(chǎn)品系列名稱旁邊的 Edit(編輯)圖標,然后輸入您的 “Employee collection(員工產(chǎn)品系列)”。

編輯新集合

接下來,您將在集合中為在 Spring Boot 應(yīng)用程序中創(chuàng)建的四個 REST API 中的每一個創(chuàng)建和測試請求。

在 Postman 中創(chuàng)建和測試請求

在左側(cè)面板中,單擊 View more actions (查看您創(chuàng)建的集合的更多操作),然后選擇 Add request(添加請求)。

查看更多操作
對集合執(zhí)行的操作列表

將請求名稱指定為 “Create Employee”。將創(chuàng)建一個新請求,如下所示:

已創(chuàng)建新請求

將 HTTP 方法更改為 POST。

HTTP 方法

在 Enter Request URL (輸入請求 URL) 字段中,輸入 “https://localhost:8080/api/employees”。

輸入 API URL

端點 /API/employees 前面是應(yīng)用程序運行的服務(wù)器和端口。如果您的應(yīng)用程序在不同的端口上運行,請?zhí)鎿QURL中的8080。

要將請求正文發(fā)送到這個請求URL終端節(jié)點,請轉(zhuǎn)到“Body”(正文)選項卡,并勾選“JSON”作為請求正文格式的原始復(fù)選框。

Postman 中的 body 選項卡

在提供的文本框中輸入以下數(shù)據(jù):

{
"firstName":"Nida",
"lastName":"Khan",
"emailId":"example1@gmail.com"
}

以下是將要添加到數(shù)據(jù)庫中的員工詳細信息。請點擊保存,然后發(fā)送請求。以下是在Postman中您可能會收到的回復(fù):

{
"id": 1,
"firstName": "Nida",
"lastName": "Khan",
"emailId": "example1@gmail.com"
}

請注意200 OK響應(yīng)狀態(tài),并且響應(yīng)主體是一個JSON,其中包含了保存在數(shù)據(jù)庫中的員工記錄的詳細信息。

轉(zhuǎn)到MySQL,并通過執(zhí)行查詢來驗證是否使用上述員工詳細信息創(chuàng)建了一個新行,其中包含emp_id=1

SELECT * FROM employee;
MySQL 表

同樣地,您也需要創(chuàng)建并運行針對員工的 GET、DELETE 和 UPDATE 請求。

對于獲取員工信息的 GET 請求,請在請求 URL 字段中輸入 http://localhost:8080/api/employees。無需填寫請求體,直接點擊發(fā)送即可。

獲取員工

要更新具有特定ID的員工信息,請創(chuàng)建一個PUT請求。在輸入請求URL字段中輸入 http://localhost:8080/api/webs/1。在原始JSON正文中輸入以下詳細信息,然后點擊發(fā)送:

{
"firstName": "Nida",
"lastName": "K",
"emailId": "example2@gmail.com"
}
編輯員工

為員工記錄創(chuàng)建一個請求。在“Enter Request URL”(輸入請求 URL)字段中,輸入DELETE http://localhost:8080/api/employees/1。請求體保持為空,然后點擊“Send”(發(fā)送)。

刪除員工

Java Spring Boot API 項目的下一步是什么?

通過本教程,您已經(jīng)學(xué)習(xí)了如何利用 Spring Boot 來構(gòu)建 REST API,并且掌握了在 Postman 中對這些 API 進行測試的方法。

接下來,通過查看這些文章并在 Spring Boot 應(yīng)用程序中實現(xiàn) Twilio API 來挑戰(zhàn)自己:

原文鏈接:https://www.twilio.com/en-us/blog/create-rest-apis-java-spring-boot

上一篇:

如何使用Rust構(gòu)建API服務(wù)器

下一篇:

使用Rust語言的Rocket.rs和Diesel.rs構(gòu)建API(采用整潔架構(gòu))
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊

多API并行試用

數(shù)據(jù)驅(qū)動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費