Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在现有API的基础上设计轻量级RESTAPI_Java_Rest_Spring Boot - Fatal编程技术网

Java 如何在现有API的基础上设计轻量级RESTAPI

Java 如何在现有API的基础上设计轻量级RESTAPI,java,rest,spring-boot,Java,Rest,Spring Boot,我有一个GETAPI,它返回一个具有15个属性的对象(如果要返回所有属性,那么响应会很大)。我需要设计另一个API,它具有完全相同的签名,但只需要返回这15个属性中的6个(轻量级API) 我希望以这样一种方式实现此API,即它使用大多数现有实现,但只添加一点逻辑来传递所需的轻量级属性,而不是所有属性。有没有一个框架或推荐的模式可以用来实现这一点?该实现是在基于JAVA/spring引导的rest API中实现的您可以查看Jackson视图 这意味着定义两个视图,一个用于包含15个字段的响应,另一

我有一个GETAPI,它返回一个具有15个属性的对象(如果要返回所有属性,那么响应会很大)。我需要设计另一个API,它具有完全相同的签名,但只需要返回这15个属性中的6个(轻量级API)


我希望以这样一种方式实现此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: