我正在尝试使用 Spring-boot Java 和 SteelToe ASP.NET 创建微服务
第 1 步:我使用 Java 创建了一个完整的服务(具有 UI 和 API 的服务。它托管在 PCF 上)。API 内部定义了 ClassesControler。
第 2 步:使用 ASP.NET、SteelToe 创建一个微服务。在 Eureka 中注册服务并使用 Zuul 使其可发现。
步骤 3:使用接口、服务方法访问 JAVA 微服务
namespace employee-client.Service
{
public interface IRelayService
{
Task<HttpResponseMessage> getClassesList(string relativeUrl = "/api/v1/classes");
}
}
带有接口实现的服务:
namespace employee-client.Service
{
public class RelayService : IRelayService
{
DiscoveryHttpClientHandler _handler;
string _accessToken;
private const string BASE_URL = "https://www.example.com";
public QortaService(IDiscoveryClient client, string accessToken)
{
_handler = new DiscoveryHttpClientHandler(client);
_accessToken = accessToken;
}
public async Task<HttpResponseMessage> getClassesList(string relativeUrl)
{
string classesUrl= BASE_URL + relativeUrl;
HttpClient client = GetClient();
HttpRequestMessage request = new HttpRequestMessage();
request.RequestUri = new Uri(classesUrl);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _accessToken);
return await client.SendAsync(request, HttpCompletionOption.ResponseContentRead);
}
private HttpClient GetClient()
{
var client = new HttpClient(_handler, false);
return client;
}
}
}
我根据 SteelToe 中的示例提出了这种方法,但我讨厌硬编码 BASE_URL。问:我非常喜欢 Java 中使用的 @FeignClient 注解方式。关于如何以更好的方式访问现有微服务的任何想法。如果是这样,一个例子将不胜感激
编辑:我修改了问题以使其更清楚。流量从 Java 服务流向 .NET 服务。.NET 服务从 JAVA 服务 (ClassesController.java) 中的控制器请求类列表