我使用Spring框架开发了REST API,实现了Spring HATEOS,但在下面的响应中,我想省略下图黑色矩形框中的“模板”
现在,我通过实现ResourceAssembler<>
创建了一个汇编程序类,并通过实现它的toResource()
方法放下了所有与链接相关的代码,并在我的控制器中调用了该代码
汇编器
package com.javarnd.bbms.assembler;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
import org.springframework.hateoas.Resource;
import org.springframework.hateoas.ResourceAssembler;
import org.springframework.stereotype.Component;
import com.javarnd.bbms.model.DonorDetail;
import com.javarnd.bbms.webapi.DonorDetailRestControllerV3;
@Component
public class DonorDetailAssembler implements ResourceAssembler<DonorDetail,Resource<DonorDetail>> {
@Override
public Resource<DonorDetail> toResource(DonorDetail donorDetail) {
return new Resource<>(donorDetail,
linkTo(methodOn(DonorDetailRestControllerV3.class).one(donorDetail.getDonorId())).withSelfRel(),
linkTo(methodOn(DonorDetailRestControllerV3.class).all()).withRel("donors"));
}
}
控制器代码段
@GetMapping(value=ONE, produces=MediaType.APPLICATION_JSON_VALUE)
public Resource<DonorDetail> one(@PathVariable Long id) {
DonorDetail donorDetail=null;
try {
donorDetail = donorDetailService.findById(id);
return donorAssembler.toResource(donorDetail);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
我没有碰到任何文档的帖子,都可以根据自己的需求调整响应,因此将不胜感激。