关于java:在客户端应用程序中声明REST服务api端点的正确模式?

Correct pattern for declaring REST service api endpoints in client application?

这是一个代码样式和体系结构问题。而且,它不仅适用于iOS或Android。在客户端应用程序中声明存储REST API的端点(URL)的最佳和最正确的方法是什么?比如说,我有一个社交网络或其他休息服务的客户端应用程序。这个服务有很多不同的API端点:user/loginuser/profilecommon/list等等。此终结点可能有大量。所以问题是我应该如何在我的客户的应用程序中正确地管理这个?现在,我只声明这样的字符串常量:iOS:static NSString * const kLoginUser = @"user/login",swift:let loginUser ="user/login",或Android:"private final String LOGIN_USER ="user/login"

但是,如果Web服务相当复杂,那么可以有40-50个这样的字符串常量或更多。我想知道:也许我做的方式不对,还有更优雅的方式来管理REST客户机中的端点?任何解释或有趣的方法都会很有帮助。


我认为没有更好的方法可以在一些常量中保存端点URL(或它们的唯一部分)。如果您从一些配置文件中读取它们,这仍然是一个常量,不应该在运行时更改。

如果你被大量的敌人包围了-把他们分组。在一个类中尊重固体群的"s"和相关的enpoints。例如,将访问用户/登录、用户/配置文件、用户/其他内容的方法放在UserServices类、common/a、common/b、common/u rest in CommonServices中。带有端点URL的字符串常量将在此服务类中定义。


我通常认为它的实现方式是为各种服务调用创建枚举:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
protected enum SpecificRestServiceMethods implements RestServiceMethods{
   EXAMPLE_REST_CALL_ONE("/example/service/examplerestcallone"),
   EXAMPLE_REST_CALL_TWO("/example/service/examplerestcalltwo"),
   //etc etc

   private String path;
   private SpecificRestServiceMethods(String path){
     this.path = path;
   }

   public String getName(){
     return this.name();
   }
   public String getPath(){
     return path;
   }
}

然后,只需在处理一般的REST内容的任何类中猛击该块。