Java 如何在现有API的基础上设计轻量级RESTAPI
我有一个GETAPI,它返回一个具有15个属性的对象(如果要返回所有属性,那么响应会很大)。我需要设计另一个API,它具有完全相同的签名,但只需要返回这15个属性中的6个(轻量级API)Java 如何在现有API的基础上设计轻量级RESTAPI,java,rest,spring-boot,Java,Rest,Spring Boot,我有一个GETAPI,它返回一个具有15个属性的对象(如果要返回所有属性,那么响应会很大)。我需要设计另一个API,它具有完全相同的签名,但只需要返回这15个属性中的6个(轻量级API) 我希望以这样一种方式实现此API,即它使用大多数现有实现,但只添加一点逻辑来传递所需的轻量级属性,而不是所有属性。有没有一个框架或推荐的模式可以用来实现这一点?该实现是在基于JAVA/spring引导的rest API中实现的您可以查看Jackson视图 这意味着定义两个视图,一个用于包含15个字段的响应,另一
我希望以这样一种方式实现此API,即它使用大多数现有实现,但只添加一点逻辑来传递所需的轻量级属性,而不是所有属性。有没有一个框架或推荐的模式可以用来实现这一点?该实现是在基于JAVA/spring引导的rest API中实现的您可以查看Jackson视图 这意味着定义两个视图,一个用于包含15个字段的响应,另一个用于包含6个字段的响应
public class Views {
// only 6 attributes
public static class Standard { }
// all 15 attributes - note the extends
public static class Full extends Standard { }
}
然后,在响应类属性上添加@JsonView
注释
public class Response {
// will be visible only in Standard view
@JsonView(Views.Standard.class)
private Object attribute1;
// will be visible in both Standard and Full views
@JsonView(Views.Full.class)
private Object attrbiute2;
}
在API级别,您可以定义两个端点,一个用于标准模式,另一个用于完整模式
@JsonView(Views.Stadard.class)
@GetMapping("/standard")
public Response getStandard() {
// ...
}
@JsonView(Views.Full.class)
@GetMapping("/full")
public Response getFull() {
// ...
}
基于客户端调用的端点,Jackson将相应地序列化响应
从重用的角度来看,这很有吸引力,因为它只会影响实体和web层(并且只会添加一些注释),从而允许您完全重用当前逻辑
您尝试了什么吗?为什么不在API中传递偏移量和所需的记录参数,以便API返回基于偏移量和记录的结果,以获取类似偏移量3和大小4的数据,这意味着您的记录将从3到(3+4)=7I实现了最基本的方法,其中我有两个不同的类,代表两个不同的响应,然后轻量级方法调用bulky方法,然后使用bulky方法的响应填充轻量级类。。。但我确信会有更好的方法。。。杰克逊的风景看起来很完美,我想…哇!这似乎是一个完美的解决方案。。。让我看一下教程和一些考虑。我将带着我的评论回来。非常感谢+1: