<section class="series-text">
<p><strong>構建 REST API 並非易事</strong> – 從高級的 RESTful 約束到將所有內容都構建起來並使其良好運行的細節。</p>
<p>Spring 將 REST 提升為一等公民,並且該平台在不斷成熟。</p>
<p>通過本指南,我的目標是整理關於該主題的大量信息,並指導您正確構建 API。</p>
<p>本指南從 <strong >基礎知識</strong>開始 – 構建 REST API、基本用法和註解。</p>
<p>然後,它深入探討了 REST 的更 <strong >高級領域</strong> – 例如錯誤處理、分頁、測試和文檔化 API。</p>
<p>最後,它探討了如何使用不同的 <strong >Spring REST 客户端</strong>,包括 <em >RestClient</em>、<em >RestTemplate</em> 和 <em >WebClient</em>。</p>
</section>
<section class="series-category baeldung_series_block">
<div>
<img src="/file/story/attachments/image/l/5ca3ef26-0136-42ab-968f-3c5c7f96e209">
</div>
</section>
先決條件
啓動 Web 應用程序
<section>
<h2>REST API Basics</h2>
</section>
<section class="baeldung_series_block">
<div>
<img src="/file/story/attachments/image/l/be37c829-9113-40fd-8628-9eafdb844e23">
構建 REST API (流行)
</div>
<div>
<img src="/file/story/attachments/image/l/a12f39fd-a8b6-4492-b057-6e227fb50dcd">
使用 Spring ResponseEntity 操縱 HTTP 響應 (流行)
</div>
<div>
<img src="/file/story/attachments/image/l/8a0bcbde-e01f-4e76-a3b1-8d75fff6fc60">
如何在 Spring REST 控制器中讀取 HTTP 標頭 (流行)
</div>
<div>
<img src="/file/story/attachments/image/l/ec310e36-206c-43cc-80aa-9b877391f4c8">
實體到 DTO 轉換用於 Spring REST API (流行)
</div>
<div>
<img src="/file/story/attachments/image/l/d701eecd-e918-42dc-906b-e1272d63a4eb">
REST 的錯誤處理 (流行)
</div>
<div>
<img src="/file/story/attachments/image/l/365ba363-fc77-42f3-b686-f2ea7331a945">
REST API 中的 HTTP PUT 與 POST
</div>
<div>
<img src="/file/story/attachments/image/l/4d046243-d6b5-4d47-b52e-6dde6b5604ea">
REST API 的自定義錯誤消息處理 (流行)
</div>
</section>
<section>
<h2>REST API 註解</h2>
</section>
<section class="baeldung_series_block">
<div>
<img src="/file/story/attachments/image/l/a465542b-3dc9-4ca6-90d7-c7a526942adb">
<span>Spring @Controller 和 @RestController 註解</span>
</div>
<div >
<img src="/file/story/attachments/image/l/faec618f-9060-49ce-9f6b-fd884be6a245">
<span>Spring @RequestBody 和 @ResponseBody 註解</span>
</div>
<div >
<img src="/file/story/attachments/image/l/833baa9b-49d9-4c90-b014-3c372d7d599d">
<span>Spring @PathVariable 註解</span>
</div>
<div >
<img src="/file/story/attachments/image/l/62afa8c5-7cd9-4037-bfb2-61cc9ab4b91d">
<span>Spring @RequestParam 註解</span>
</div>
<div >
<img src="/file/story/attachments/image/l/e2cb8b3c-db8d-4e43-a6fe-f025d83bcaaa">
<span>Spring @RequestMapping 註解</span>
</div>
<div >
<img src="/file/story/attachments/image/l/456fc8e8-77b2-4c7c-96fe-eaddc5895b58">
<span>Spring @ResponseStatus 註解</span>
</div>
</section>
<section>
<div class="series-category baeldung_series_block">
<div>
<img src="/file/story/attachments/image/l/d482d799-701e-42f9-837e-9592461c1103">
<h2>REST API 文檔化和版本控制</h2>
</div>
<ul id="api-documentation-list">
<li>
<img src="/file/story/attachments/image/l/8f7ac4ce-4315-4d1e-a429-4c84f63e6335">
<span>設置 Swagger 2 與 Spring REST API 的集成 <span>(熱門)</span></span>
</li>
<li>
<img src="/file/story/attachments/image/l/32ac2794-87e0-4f3c-8d27-d8e27837011f">
<span>使用 OpenAPI 3.0 文檔化 Spring REST API <span>(熱門)</span></span>
</li>
<li>
<img src="/file/story/attachments/image/l/f784b0cd-6fc8-4ca2-8662-546fdb18b98c">
<span>Swagger @Parameter vs @Schema <span>(熱門)</span></span>
</li>
<li>
<img src="/file/story/attachments/image/l/55dba6c3-e470-429d-9ebe-89b724e802f2">
<span>使用 Swagger 生成 Spring Boot REST 客户端 <span>(熱門)</span></span>
</li>
<li>
<img src="/file/story/attachments/image/l/2d8128bf-d446-4f5b-bbfc-dc26ebff208d">
<span>REST API 版本控制</span>
</li>
<li>
<img src="/file/story/attachments/image/l/d451cddb-f31c-4139-85e3-62567cecb497">
<span>@Operation vs @ApiResponse in Swagger <span>(熱門)</span></span>
</li>
<li>
<img src="/file/story/attachments/image/l/b75f2b3a-84f8-441b-b56c-858ca073b111">
<span>使用 Swagger 設置示例和描述 <span>(熱門)</span></span>
</li>
</ul>
</section>
<section>
<h2>REST API 高級主題</h2>
</section>
<section class="baeldung_series_block">
<div>
<img src="/file/story/attachments/image/l/fc1eedc8-e668-43ba-bb41-4da483139c75">
<ul>
<li><img src="/file/story/attachments/image/l/c4eeb2d7-c0b1-4e8e-aa87-02bd77db7e81"> REST 分頁 (流行)</li>
<li><img src="/file/story/attachments/image/l/45d9c565-0ec9-4660-be5b-35d870ca67ed"> 為 Spring REST API 設置請求超時 (流行)</li>
<li><img src="/file/story/attachments/image/l/9c7c46a5-428c-4590-9f3e-94185d535e25"> Spring REST API 錯誤處理的最佳實踐 (流行)</li>
<li><img src="/file/story/attachments/image/l/75d81602-a488-4d6f-babc-cb9ee3f45c37"> Spring Boot 獲取所有端點</li>
<li><img src="/file/story/attachments/image/l/2cacc7f9-f1c8-4e28-bf4b-eb3fc2f4d7ad"> 使用 CompletableFuture 發送多個 REST 請求</li>
<li><img src="/file/story/attachments/image/l/a02b37df-dca9-4cf2-b9a7-8b1b83319460"> 避免對服務層進行脆弱的測試</li>
</ul>
</div>
</section>
<section>
<div class="series-category baeldung_series_block">
<div>
<img src="/file/story/attachments/image/l/be36f8ef-03ef-4d32-8a77-769f60f16ccf">
<h2>REST API 測試</h2>
<ul>
<li><img src="/file/story/attachments/image/l/7f1e0073-3861-4146-a508-daf96ae6076e"> <span > 使用 Java 測試 REST API</span></li>
<li><img src="/file/story/attachments/image/l/5b77f688-02d2-46b7-bec2-07d33fb7c2b0"> <span > 使用 Spring MockMvc 測試異常</span></li>
<li><img src="/file/story/attachments/image/l/e936a104-37b0-4684-95c8-627e1b082b7f"> <span > 使用 Cucumber 進行 REST API 測試</span></li>
<li><img src="/file/story/attachments/image/l/8b1ba036-2488-42b4-b36a-9fd7d436dd2e"> <span > WireMock 簡介 (流行)</span></li>
<li><img src="/file/story/attachments/image/l/56129a5b-f8a8-42b9-9b5c-1b4e62e432b2"> <span > REST-assured 指南 (流行)</span></li>
<li><img src="/file/story/attachments/image/l/1caa9a18-65f3-42f2-aee4-4b980a986474"> <span > 使用 REST-assured 獲取和驗證響應數據</span></li>
<li><img src="/file/story/attachments/image/l/15fa1050-a26a-4429-9a38-0d06e4ead4bb"> <span > 使用 curl 測試 REST API (流行)</span></li>
</ul>
</div>
</div >
</section>
<section>
<h2>RestTemplate</h2>
<div>
<ul id="rest-template-list">
<li><img src="/file/story/attachments/image/l/0c14a641-7642-4a0a-b730-b7b099e069df"> <span data-translate="The Guide to RestTemplate">(popular)</span></li>
<li><img src="/file/story/attachments/image/l/536e05ca-2489-466a-8583-4bb44b43953c"> <span data-translate="A Guide to RestClient in Spring Boot">(popular)</span></li>
<li><img src="/file/story/attachments/image/l/467b71b7-6e33-436c-8ace-f98a21e136c0"> <span data-translate="RestTemplate Post Request with JSON">(popular)</span></li>
<li><img src="/file/story/attachments/image/l/f18653c8-2a8a-409d-8a3d-a1ec8acd0b64"> <span data-translate="Get and Post Lists of Objects with RestTemplate</span></li>
<li><img src="/file/story/attachments/image/l/9e8542ad-2da2-4399-977b-d2545fc9ce98"> <span data-translate="Spring RestTemplate Error Handling">(popular)</span></li>
<li><img src="/file/story/attachments/image/l/0d6bcaa1-0fa9-4e88-9c95-0d7ae2861fca"> <span data-translate="Uploading MultipartFile with Spring RestTemplate</span></li>
<li><img src="/file/story/attachments/image/l/019d8ccb-9e5a-4797-a052-80ebaec261f8"> <span data-translate="RestTemplate with Basic Authentication</span></li>
<li><img src="/file/story/attachments/image/l/187eb365-1de7-43b2-9594-aa5ce3b4b92e"> <span data-translate="Configure a RestTemplate with RestTemplateBuilder">(popular)</span></li>
<li><img src="/file/story/attachments/image/l/40d07e31-6a24-47a1-97f4-b06f89b6d8c7"> <span data-translate="Spring RestTemplate Request/Response Logging</span></li>
<li><img src="/file/story/attachments/image/l/cfba03b5-7446-4a59-bba0-bc0c5ecb71e0"> <span data-translate="Access HTTPS REST Service Using Spring RestTemplate">(popular)</span></li>
</ul>
</div>
</section>
<section>
<h2>WebClient</h2>
</section>
<section class="baeldung_series_block">
<div>
<img src="/file/story/attachments/image/l/20498be4-645b-4314-b52f-c9d7a8d56f56">
<ul id="webclient-list">
<li data-popular="true">
<img src="/file/story/attachments/image/l/d2fc1f31-2a57-4beb-aca9-97541cf52987">
<span>Spring WebClient</span><span>(popular)</span>
</li>
<li data-popular="true">
<img src="/file/story/attachments/image/l/bdebdabd-8015-4be0-8d9e-48f05cd56b92">
<span>Spring WebClient Requests with Parameters</span><span>(popular)</span>
</li>
<li data-popular="true">
<img src="/file/story/attachments/image/l/80040cd6-2e77-4e9e-b8e7-5cf73efcfec5">
<span>Spring WebClient Filters</span>
</li>
<li data-popular="true">
<img src="/file/story/attachments/image/l/6810d09d-ed19-4f7d-851c-e508aae1b323">
<span>Get List of JSON Objects with WebClient</span>
</li>
<li data-popular="true">
<img src="/file/story/attachments/image/l/f73e3d36-8387-4885-a4e9-82ac94c7c1ac">
<span>Spring WebClient and OAuth2 Support</span><span>(popular)</span>
</li>
<li data-popular="true">
<img src="/file/story/attachments/image/l/90fd06ab-6f58-45ce-bb0b-c98b59869c11">
<span>Simultaneous Spring WebClient Calls</span>
</li>
<li data-popular="true">
<img src="/file/story/attachments/image/l/e22d1df0-a768-40bc-9473-4d875c40ee3d">
<span>Spring WebClient vs. RestTemplate</span><span>(popular)</span>
</li>
</ul>
</div>
</section>
其他 Spring 教程
Spring Boot 教程 (流行) (系列) “學習 Spring Boot 並瞭解如何自定義 Spring Boot 應用程序”
Spring Persistence 教程 (流行) (系列) “學習如何使用 Spring Data JPA 和其他 Spring 持久性技術”
Spring Security OAuth2 指南 (流行) (系列) “學習如何使用 Spring OAuth2 支持安全 REST API”