java-demo / README.md
duqing2026's picture
Add Spring Boot Todo API demo
3f6ed60
metadata
title: Java 面试 Demo(Todo API)
emoji: 🚀
colorFrom: blue
colorTo: purple
sdk: docker
pinned: false

Java 面试 Demo(Todo API)

这是一个用于面试展示的 Java 小项目:基于 Spring Boot 实现一个最小可用的 Todo REST API,并包含参数校验、统一错误返回和基础测试。适配 HuggingFace Spaces(Docker)运行。

功能点

  • Todo CRUD:创建、查询列表、按 id 查询、更新、删除
  • 参数校验:title 必填、长度限制等
  • 统一错误返回:校验错误与 404 统一结构化返回
  • 基础测试:MockMvc 覆盖创建与校验失败场景
  • HuggingFace Spaces:Docker 方式部署,默认监听 7860 端口

本地运行

前置:

  • JDK 21(推荐)

启动:

export JAVA_HOME=$(/usr/libexec/java_home -v 21)
./mvnw test
./mvnw spring-boot:run

访问:

API 说明

创建 Todo

curl -s -X POST http://localhost:7860/api/todos \
  -H 'Content-Type: application/json' \
  -d '{"title":"准备面试","description":"把这个项目讲清楚"}'

查询列表

curl -s http://localhost:7860/api/todos
curl -s 'http://localhost:7860/api/todos?status=DONE'

更新 Todo

curl -s -X PUT http://localhost:7860/api/todos/1 \
  -H 'Content-Type: application/json' \
  -d '{"title":"准备面试","description":"更新一下状态","status":"DONE"}'

删除 Todo

curl -i -X DELETE http://localhost:7860/api/todos/1

设计要点(面试可讲)

  • 分层:Controller / Service 分离,Service 内存存储(ConcurrentHashMap)
  • 数据结构:使用 record 表达 DTO 与返回值
  • 异常处理:全局异常处理,输出稳定的 ErrorResponse 结构
  • 可部署性:读取 PORT 环境变量并监听 0.0.0.0,适配容器平台

部署到 HuggingFace Spaces(Docker)

本仓库已经包含 Dockerfile。将代码推送到 Space 仓库后,Space 会自动构建并启动。