学习JDK中HTTP Client的API使用;包含使用HTTP Client进行CRUD的API调用案例和文件上传下载API调用案例;同步调用案例和异步调用案例。

yangyi aae8cb8a15 新增 README:项目简介、运行方式、API端点与文档索引 1 týždeň pred
API_server 2e851bec52 新增 API_server 模块:User Management API (Spring Boot 3.5, H2+JPA+springdoc) 1 týždeň pred
src 209ba90e84 教程点2/6/12补全:PUT/DELETE请求、文件下载、HTTP Client核心对象API - 示例代码、测试与doc.md完善 1 týždeň pred
.gitignore 2e851bec52 新增 API_server 模块:User Management API (Spring Boot 3.5, H2+JPA+springdoc) 1 týždeň pred
AGENTS.md 2e851bec52 新增 API_server 模块:User Management API (Spring Boot 3.5, H2+JPA+springdoc) 1 týždeň pred
README.md aae8cb8a15 新增 README:项目简介、运行方式、API端点与文档索引 1 týždeň pred
blog.md 5761b9cf62 JDK HTTP Client 使用教程 blog 文档输出 1 týždeň pred
doc.md 209ba90e84 教程点2/6/12补全:PUT/DELETE请求、文件下载、HTTP Client核心对象API - 示例代码、测试与doc.md完善 1 týždeň pred
httpClient.md 209ba90e84 教程点2/6/12补全:PUT/DELETE请求、文件下载、HTTP Client核心对象API - 示例代码、测试与doc.md完善 1 týždeň pred
pom.xml 451971c322 基线:初始化教程项目,引入 Jackson 依赖与快速入门示例 1 týždeň pred

README.md

JDK HTTP Client 使用教程

基于 JDK 自带模块 java.net.http(Java 11+,本仓库使用 Java 17)的实战示例项目, 围绕一个本地运行的 User Management API,演示 JDK HTTP Client 的核心用法。 每个知识点均包含:示例代码、JUnit 测试、文字说明。

项目结构

httpClient/
├── src/                        # JDK HTTP Client 示例与测试(根模块,Java 17)
│   ├── main/java/space/anyi/httpClient/
│   │   ├── model/              # UserRequest / UserVO / FileVO / Result<T> 模型
│   │   ├── QuickStart.java     # 快速入门:请求构造与响应处理
│   │   ├── GetExample.java     # GET 请求
│   │   ├── PostExample.java    # POST 请求(JSON)
│   │   ├── PutDeleteExample.java # PUT / DELETE 请求
│   │   ├── HeaderExample.java  # 请求头
│   │   ├── BodyExample.java    # 请求体 / multipart 文件上传
│   │   ├── FileDownloadExample.java # 文件下载
│   │   ├── SyncAsyncExample.java   # 同步与异步
│   │   ├── ResponseHandlerExample.java # 响应处理器
│   │   ├── ClientConfigExample.java  # HTTP Client 配置
│   │   ├── RequestConfigExample.java # HTTP Request 配置
│   │   └── CoreApiExample.java # 核心对象 API 一览
│   └── test/java/space/anyi/httpClient/  # 12 个测试类(JUnit 5)
├── API_server/                 # User Management API(Spring Boot 3.5,独立模块)
├── httpClient.md               # 主题大纲
├── doc.md                      # 详细使用文档
└── blog.md                     # 教程 blog(doc.md 的 blog 化渲染)

环境要求

  • JDK 17+
  • Maven 3.6+

快速开始

# 1. 启动 API 服务(独立 Spring Boot 应用,监听 8080 端口)
mvn -f API_server/pom.xml spring-boot:run

# 2. 运行全部测试(需先启动 API 服务)
mvn test

# 2'. 运行单个测试类
mvn -Dtest=GetExampleTest test

注意:测试会真实调用本地 API,必须先启动 API 服务,否则网络相关测试会失败。

API 端点

方法 路径 说明
GET /api/users 查询用户列表
GET /api/users/{id} 按 id 查询单个用户
POST /api/users 创建用户(JSON)
PUT /api/users/{id} 整体更新用户(JSON)
DELETE /api/users/{id} 删除用户
POST /api/files/upload 文件上传(multipart/form-data)
GET /api/files/download/{storedFileName} 按存储文件名下载文件

用户字段(UserRequest):nameaccountsex 均必填,account 唯一, 重复创建返回 409。所有接口返回统一包装结构 {code, message, data}。 文件上传结果存于 uploads/ 目录(已 gitignore)。

启动后可通过 Swagger UI(springdoc)浏览接口文档: http://localhost:8080/swagger-ui.html

文档

文件 内容
httpClient.md 主题大纲(文档结构的事实来源)
doc.md 详细使用文档
blog.md blog 版教程

涉及知识点

  • GET / POST / PUT / DELETE 请求
  • 请求头与请求体(JSON、输入流、multipart 文件上传)
  • 文件上传与下载
  • 同步 send() 与异步 sendAsync()、批量并发
  • 内置与自定义响应处理器(BodyHandler / BodySubscriber)
  • HTTP Client 与 HTTP Request 配置项
  • 核心对象(HttpClient / HttpRequest / HttpResponse / HttpHeaders)API