gpt4 book ai didi

java - 保持 Jersey Client API 函数和 REST (Jersey API) Server 函数链接的 "proper"和正确方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:01:07 25 4
gpt4 key购买 nike

我想知道有更多经验和更复杂项目的人如何与 REST 通信中的这种“丑陋”相处。想象一下以下问题:

我们需要为 REST 基础架构中的一个特定资源提供大量功能,在我的例子中,大约有 50 多个功能会导致不同的查询和不同的响应。我试图想出一个有意义的资源树并将它们分配给将做“东西”的方法。之后,服务器资源类如下所示:

@Path("/thisResource")    
public class SomeResource {

@GET/POST/PUT/DELETE
@Path("meaningfulPath")
public Response resourceFunction1 ( ...lots of Params) {

... logic ....

}

//
// lots of functions ...
//

@GET/POST/PUT/DELETE
@Path("meaningfulPath")
public Response resourceFunctionN ( ...lots of Params) {

... logic ....
}
}

为了构造我的客户将调用的 url,我做了一个小函数来防止拼写错误并更好地利用常量

所以我的客户看起来像这样:

public class Client() {
public returnType function1 () {
client.resource = ResourceClass.build(Constants.Resouce, "meaningfulPath");
...
return response.getEntity(returnType);
}

}

现在困扰我的问题是如何更好地将客户端功能和服务器功能联系起来?

这两个代码块之间的唯一联系是将由客户端调用并由服务器映射的 URL,如果即使这个 URL 是在其他地方生成的,也会导致很多困惑。

当我的一位同事需要进入这段代码时,他很难弄清楚 50 多个客户端函数中的哪一个导致了哪个服务器函数。也很难确定代码中是否有过时的功能等。我想你们中的大多数人比我更了解不干净代码的问题。

你如何处理这个问题?您将如何保持此代码干净、可维护且美观?

最佳答案

通常,这将由 EJB 或类似技术解决。

或者至少通过“真正的”Web 服务,它至少会提供 WSDL 和模式 (with kind of mapping to Java interfaces, or "ports")。

但是 REST 通信非常类型松散且结构松散

我现在唯一能想到的是:定义一个项目(让我们称之为“定义”),该项目将被客户引用(因此已知)服务器。在这个项目中,您可以定义一个包含大量 public static final String 的类,例如:

public static final String SOME_METHOD_NAME = "/someMethodName";
public static final String SOME_OTHER_METHOD_NAME = "/someOtherMethodName";

注意:static final String 可以很好地被注释引用(在这种情况下,它被编译器认为是常量)。所以使用“常量”来注解你的@Path,比如:

@Path(Definitions.SOME_METHOD_NAME)

客户端也一样:

ResourceClass.build(Constants.Resouce, Definitions.SOME_METHOD_NAME);

关于java - 保持 Jersey Client API 函数和 REST (Jersey API) Server 函数链接的 "proper"和正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com