Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/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
如何将REST请求的参数传递给Java方法?_Java_Api_Rest_Sdk_Builder Pattern - Fatal编程技术网

如何将REST请求的参数传递给Java方法?

如何将REST请求的参数传递给Java方法?,java,api,rest,sdk,builder-pattern,Java,Api,Rest,Sdk,Builder Pattern,我们正在构建一个JavaSDK,以简化对提供RESTAPI的服务之一的访问。此SDK将由第三方开发人员使用 问题之一是找到一种好的方法来表示每个请求的可选参数 假设我们有rest端点:GET/photos 它有几个可选参数:sortBy,pageSize,pageNumber,等等 一种解决方案是接受Map作为表示rest调用的api方法的参数 interface RestService { public List<Photo> getPhotos(Map<Str

我们正在构建一个JavaSDK,以简化对提供RESTAPI的服务之一的访问。此SDK将由第三方开发人员使用

问题之一是找到一种好的方法来表示每个请求的可选参数

假设我们有rest端点:
GET/photos
它有几个可选参数:
sortBy
pageSize
pageNumber
,等等

一种解决方案是接受
Map
作为表示rest调用的api方法的参数

interface RestService {   
    public List<Photo> getPhotos(Map<String,String> parameters);
}
问题在于,我们试图用SDK覆盖的服务有大量需要实现的请求,几乎所有请求都有不同的选项列表。这可能会导致大量选项类别。


这里的最佳解决方案是什么?为每个组合构建一个选项对象(及其生成器?继承在这里没有太大帮助,因为我有各种各样的参数组合。

更好的方法是使用选项对象,如您所示:

interface RestService {   
    public List<Photo> getPhotos(PhotosOptions options);
}
接口RestService{
公共列表获取照片(照片选项);
}
这是一个非常困难的方法,需要输入大量的字母,你会有很多的类和其他屁股痛

但我的观点是,这种方法比其他方法更好,因为它提供了强大的方法签名,使您的SDK更具确定性。如果您正确地按包分隔类,您将看到这是一种更好的方法

用户会告诉你谢谢


不久前我也遇到了同样的问题,经过几次尝试,我选择了这种方法,现在我很高兴。

如果这对你有帮助,现在就不要问了。我写的这是一个REST客户端库,它允许通过编写REST服务的接口(字面上是java接口)来使用REST服务。请随意使用。我也相信这是最好的方式。然而,我担心我们最终将不得不编写和维护过多的选项类(及其构建器)。我们想知道sdk用户的好处是否弥补了额外的工作和复杂性(通过大量增加类的数量)。
PhotosOptions options = PhotosOptions.builder().sortBy(DESC).pageSize(200).build();
List<Photo> photos = getPhotos(options);
interface RestService {   
    public List<Photo> getPhotos(PhotosOptions options);
}