在我过去的项目中, endpoints 是一个相对属性 . 也就是说它可能会或可能没有附加,但它总是包含 protocol://host:port/partOfThePath .
如果被调用的服务具有动态部分,例如 ?param=dynamicValue ,那么该部分将被添加到 endpoints . 但很多时候 endpoints 可以按原样使用而无需修改 .
重要的是要了解 endpoints 不是什么以及它如何帮助 . 例如,传递存储在 endpoints 中的信息的另一种方法是将 endpoints 的不同部分存储在单独的属性中 . 例如:
hostForServiceA=someIp
portForServiceA=8080
pathForServiceA=/some/service/path
hostForServiceB=someIp
portForServiceB=8080
pathForServiceB=/some/service/path
或者,如果多个服务中的主机和端口相同:
host=someIp
port=8080
pathForServiceA=/some/service/path
pathForServiceB=/some/service/path
在这些情况下,需要在您的代码中构建完整的URL:
String url = "http://" + host + ":" + port + pathForServiceA + "?" + dynamicParam + "=" + dynamicValue;
在 Contract 中,这可以作为 endpoints 存储
serviceAEndpoint=http://host:port/some/service/path?dynamicParam=
并且是的,我们多次将 endpoints 存储到并包括'=' . 这导致代码如下:
String url = serviceAEndpoint + dynamicValue;
希望能有所启发 .