Как восстановить Каждый запрос DTO может быть обработан только 1 сервисом в стеке сервисов - PullRequest
1 голос
/ 13 февраля 2020

У меня есть две службы, и обе службы будут иметь одну и ту же DTO.

     [Route("service1\GetData","Get")]
     [Route("service2\GetData","Get")]
     public class GetData 
       { 
           public string MessageID {get;set;}
           public string Message {get;set;}
       }

В зависимости от службы я должен выполнить другую операцию, которую я восстановил с помощью «экземпляра name» в контейнере "

1 Ответ

0 голосов
/ 13 февраля 2020

Маршруты ServiceStack должны иметь косые черты /, и для согласованности в идеале HTTP-глаголы должны быть в верхнем регистре, например:

[Route("/service1/GetData", "GET")]
[Route("/service2/GetData", "GET")]
public class GetData 
{ 
   public string MessageID {get;set;}
   public string Message {get;set;}
}

Если вы говорите, что это разные службы тогда они должны быть разными DTO для каждого Сервиса:

[Route("/service1/GetData", "GET")]
public class GetData1
{ 
   public string MessageID {get;set;}
   public string Message {get;set;}
}

[Route("/service2/GetData", "GET")]
public class GetData2
{ 
   public string MessageID {get;set;}
   public string Message {get;set;}
}

Неясно, что послужило бы мотивацией для объединения нескольких Сервисов в одну Запросить DTO и реализацию Сервиса, но, пожалуйста, прочтите важность DTO. и DRY против намерения . DTO определяют ваш контракт на обслуживание, более важно, чтобы они четко отражали ваш дизайн сервиса, чем любые C# проблемы, такие как DRY определения декларативных свойств.

Но если вы действительно хотите, чтобы они были реализованы в той же реализации сервиса вы можете проверить base.Request вашей службы, чтобы определить guish маршрут, по которому была вызвана служба, например:

publi c class MyService {publi c object Any (запрос GetData) ) {if (base.Request.PathInfo.StartsWith ("/ service2 / GetData") {// ...}}}

Также доступен метод расширения Request.GetRoute() для получения соответствующего определения маршрута Служба была вызвана с.

...