我想根据我的querystring参数路由两个不同的RequestDTO类。 PFB这两种情况。
Scenario 1:-
localhost:8080/myservice?type="abc" //Service URL
// should be called below DTO class
public class TypeRequestDTO //DTO
{
public string type;
}
Scenario 2:-
--------------------------------------------------
localhost:8080/myservice?Name="xyz" //Service URL
// should be called below DTO class
public class NameRequestDTO //DTO
{
public string Name;
}
在这两种情景中,base url
都相同(/myservice
),但我想根据querystring parameter
进行路由。有没有办法做到这一点。
答案 0 :(得分:1)
您不能通过queryString进行路由,queryString只是用于填充由同一服务处理的请求DTO的属性。
但是在服务中你可以委托给不同的服务,例如:
[Route("/myservice")]
public class Request
{
public string Type { get; set; }
}
public class MyService : Service
{
public object Any(Request request)
{
if (request.Type == "abc")
return Any(request.ConvertTo<AbcRequest>());
return Any(request.ConvertTo<XyzRequest>());
}
public object Any(AbcRequest request) { ... }
public object Any(XyzRequest request) { ... }
}
如果实现位于不同的Service类中,您可以使用:
return base.ExecuteRequest(request.ConvertTo<AbcRequest>());
这是从IOC解决自动服务并执行它的简写,例如:
using (var service = base.ResolveService<AbcService>())
{
return service.Any(request.ConvertTo<AbcRequest>());
}