iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
Build on Google AI

單鐵的人生如履薄冰!AI 教練 APP 30天開發旅程,你說能走到最後嗎?系列 第 6

Day 6 | 怕踩破薄冰?那把冰層加厚!建立穩健的 RESTful API 專案

  • 分享至 

  • xImage
  •  

前言:AI 時代的 Antigravity 開發體驗

  • AI 協作已成常態:在 2026 年,運用 Claude、Codex 等 AI 工具協助撰寫程式、除錯與重構已是標準配備。
  • 本系列核心工具組合
    • Google Antigravity:作為主要 AI 協作開發環境,以 Agent 為核心跨編輯器、Terminal 與瀏覽器執行任務,符合「Build on Google AI」主題。
    • IntelliJ IDEA:作為我們實際把控專案骨架、管理 SDK 與啟動除錯的主力 IDE,確保開發流程嚴謹可控。
  • 開發者思維升級:AI 能代勞許多事,但開發者必須從「寫程式的人」升級為「設計架構與下指令的人」。
  • 今日目標:初始化核心專案(Java 21 + Spring Boot 3 的 RESTful API)。基礎環境與架構規則,必須由開發者親自掌握。

動手實作 1:親自掌握環境建置(JDK 21)

在請 AI 寫 Code 前,基礎建設必須自己打底。這次選用穩定且在長期支援週期內的 Java 21 LTS。底層環境由自己建置,可以避免未來碰到「IntelliJ 用 Java 21,Terminal 卻跑 Java 17」這種讓 AI 也難以通靈的情況。

JDK 是 Java Development Kit 的縮寫,是用來開發、編譯與執行 Java 程式的工具套件。以下操作都會以 macOS 為範例。

  • 手動安裝 JDK:前往 Oracle 官網下載 JDK 21,並按照 macOS 的安裝方式完成安裝。
  • 設定環境變數 (JAVA_HOME):打開 Terminal,編輯 ~/.zshrc 中:
# 清除舊的 JAVA_HOME 設定 
unset JAVA_HOME 

# 指向已安裝的 JDK 21 
export JAVA_HOME=$(/usr/libexec/java_home -v 21) 

# 將 Java 21 放到 PATH 最前面 
export PATH=$JAVA_HOME/bin:$PATH

設定後執行 source ~/.zshrc 後,輸入 java -version 確認是否成功顯示 java version "21.0.x"

takuya@Takuya-MacBook-Pro ~ % java -version
java version "21.0.12" 2026-07-21 LTS
Java(TM) SE Runtime Environment (build 21.0.12+7-LTS-205)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.12+7-LTS-205, mixed mode, sharing)
  • IntelliJ IDEA 設定:打開 IntelliJ IDEA,在上方選單找到 Project Structure,確認 Project SDKLanguage level 都設定為 Java 21。
    • 重點:確保 Terminal 與 IDE 使用的 Java 版本完全一致,才能避免程式跑不起來的窘境。

有了穩固的 Java 21 加上 Spring Boot 3 環境,我們就可以召喚 AI 了!

動手實作 2:讓 AI 產出清晰的分層架構

不要只對 AI 說「幫我寫一個 API」,否則它容易把 HTTP 請求、商業邏輯、資料處理全塞在同一個 Controller,最終變成難以維護的義大利麵條程式碼。

因此,我們在與 AI 互動時,也應該明確要求它遵守分層架構(Layered Architecture),而不是把所有邏輯都塞進 Controller。

「我要建立一個 Java 21 + Spring Boot 3 的專案。請幫我生成一個測試用的 RESTful API,例如 /api/v1/hello,並支援接收 query parameter,例如 name。請遵守分層架構,將 HTTP 請求處理放在 Controller,商業邏輯放在 Service,不要把商業邏輯直接寫在 Controller 裡。」

產出結果與責任分工:

  • Controller (HelloController):職責極度單純,僅負責接收 HTTP Request ➔ 取得 name 參數 ➔ 呼叫 Service ➔ 回傳 HTTP Response。
  • Service (HelloService):負責真正的商業邏輯,例如判斷參數是否為空、組合字串並產生 HelloResponse

很快地,AI 就會為產生分層結構:

@RestController
@RequestMapping("/test")
public class HelloController {

    private final HelloService helloService;

    public HelloController(HelloService helloService) {
        this.helloService = helloService;
    }

    @GetMapping("/hello")
    public ResponseEntity<HelloResponse> sayHello(@RequestParam(value = "name", required = false) String name) {
        HelloResponse response = helloService.getGreeting(name);
        return ResponseEntity.ok(response);
    }
}
@Service
public class HelloServiceImpl implements HelloService {

    @Override
    public HelloResponse getGreeting(String name) {
        String displayName = (name != null && !name.isBlank()) ? name : "World";
        String message = String.format("Hello, %s! Welcome to Spring Boot 3 + Java 21 REST API.", displayName);
        return new HelloResponse(message, LocalDateTime.now());
    }
}

【重點解析】

我們今天教 AI 的不是單純「幫我寫 Code」,而是「按照我的架構規則寫 Code」。

  • 資料流向明確HTTP RequestControllerServiceBusiness Logic
  • 未來佈局:到了 Day 7 實作 Gemini API 時,我們就能把呼叫 AI 的邏輯集中在 Service 層,讓 Controller 繼續保持乾淨。

動手實作 3:IntelliJ 啟動與 Postman 驗證

  • 啟動 Spring Boot:在 IntelliJ 找到帶有 @SpringBootApplication 的主程式,點擊 Run。若 Log 顯示 Tomcat started on port 8080 即代表啟動成功。
  • API 驗證:打開 Postman 發送請求,以我這邊產生的程式碼為例,我要戴上name來作為參數的request
    GET http://localhost:8080/test/hello?name=Takuya
  • 確認結果:若成功回傳包含 messagetimestamp 的 JSON 格式,代表從 Request 到 Response 的整條架構流程已成功打通。
    https://ithelp.ithome.com.tw/upload/images/20260815/20165043gH9kfjqagi.png

看到我們帶入 name=Takuya 的參數後,API 回傳了 Hello, Takuya! Welcome to Spring Boot 3 + Java 21 REST API. 的 JSON 格式與 Timestamp,到這邊也完成了一個API的初步開發!

踩坑與避雷指南

享受Antigrativy開發的同時,有個本地端實作常踩的坑要注意:

  • JDK 版本不匹配 (UnsupportedClassVersionError):如果你啟動時遇到這個紅字錯誤,通常是因為你本機預設跑的 Java 版本(例如 Java 17)低於我們這次專案設定的 Java 21。請務必回到 IntelliJ 的 Project Structure 中,確認 Project SDKLanguage level 都有確實切換到 21!

今日總結與明日預告

今天我們親自完成了 Java 21 的環境配置,並驗證了 AI 的開發模式:利用 AI 快速建構符合分層架構規範的 Spring Boot 專案,最後在本地端用 Postman 成功打通了 API。這證明我們的架構地基已經完美打穩了。

既然地基有了,我們就可以把靈魂注入進去了!
明天(Day 7),我們將進入核心重頭戲:在後端實作 Gemini API 的 HTTP Client 呼叫。我們會利用今天提到的 Service 層,正式與 Google 的 AI 大腦進行第一次連線,敬請期待!


上一篇
Day 5 | 取得 Google AI 的大腦:Gemini API 申請與金鑰管理
下一篇
Day 7 |「教練,我想變強!」在後端注入靈魂,實作 Gemini API 核心串接
系列文
單鐵的人生如履薄冰!AI 教練 APP 30天開發旅程,你說能走到最後嗎?8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言