【发布时间】:2014-09-07 13:22:48
【问题描述】:
我需要将一个请求中继到我的 ServiceStack 服务器(称为服务器 1)到另一个 ServiceStack 服务器(称为服务器 2)。我不是在讨论我为什么需要这个,而是如何从技术上解决它。
这是我在服务器 1 和服务器 2 中的 DTO 代码:
// Jma data
[Route("/jmalist", "GET")]
[Route("/jmalist/{Instrument}/{Interval}/{Session}/{Smooth}/{Phase}", "GET")]
[Route("/jmalist/{Instrument}/{Interval}/{Session}/{Smooth}/{Phase}/{User}", "GET")]
public class JmaSets : IReturn<List<BarSet>>
{
public string Instrument { get; set; }
public int Interval { get; set; }
public string Session { get; set; }
public double Smooth { get; set; }
public double Phase { get; set; }
public string User { get; set; }
public DateTime sTime { get; set; }
public DateTime eTime { get; set; }
}
这是我在服务器 1 中的服务代码:
public class JmaSetsService : Service
{
public object Get(JmaSets request)
{
List<BarSet> jmaSetList = new List<BarSet>();
string baseUrl = "http://localhost:1311";
JsonServiceClient srv = new JsonServiceClient(baseUrl);
jmaSetList = srv.Get<List<BarSet>>(request);
return jmaSetList;
}
}
目的是接收到路由“/jmalist”的请求,然后在请求中包含完整的 DTO 信息,并访问服务器 2 以获取 DTO 数据。问题是无处放置路由“/jmalist”并且传递“请求”似乎没有路由。我如何才能请求与此请求的输入相同的 DTO,但我的服务器 2 服务器?
另一种表述方式,以确保清楚这一点是考虑浏览器或 REST 客户端发生的情况。我可以直接向服务器 1 或服务器 2 发出 DTO 请求。服务器 2 是最简单的情况,因为它只响应请求的数据。服务器 1 没有数据,但会从服务器 2 获取数据。这就是这段代码的目标。
(我应该注意,我知道如何将 Json 字段序列化为新的请求 URL,但这似乎非常低效且代码密集。)
【问题讨论】:
标签: servicestack