用途:在 Spring Boot REST 响应中加入超媒体链接,构建自描述 API,实现 Spring HATEOAS。
依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-hateoas</artifactId> </dependency>
链接添加时机:self 链接每个资源响应都必须有;collection 链接回列表端点;相关资源链接用于客户端常需跳转的资源;actions 链接指向状态转换(如 cancel、ship),仅在当前状态有效时添加。
资源模型:可继承 RepresentationModel,用静态工厂方法 from 构建并添加链接。self 链接始终添加,集合链接用 withRel("orders"),条件动作链接按状态判断。控制器返回 ResponseEntity<OrderModel> 或 CollectionModel<OrderModel>,分页时用 IanaLinkRelations.NEXT、PREV 添加翻页链接。响应形如 _links 中包含 self、orders、cancel 等 href。
推荐模式:实现 RepresentationModelAssembler<Entity, Model>,在 toModel 中构建 EntityModel 并注入控制器,避免在控制器内写链接逻辑。分页集合使用 PagedResourcesAssembler 自动生成 first、prev、next、last 链接,返回 PagedModel。
常见陷阱:不要无视状态添加所有动作链接;不要硬编码 URL,应使用 linkTo(methodOn(...)) 保证类型安全;不要返回裸 DTO,应包装为 EntityModel.of(dto, links...) 或继承 RepresentationModel;不要把链接逻辑放在控制器,应抽取到 Assembler;不要手动构建分页链接,应使用 PagedResourcesAssembler;不要遗漏 self 链接。
限制:资料未提供版本要求、性能影响及与其他媒体类型(如 HAL-FORMS)的兼容性说明。