ServiceStack:在DTO中使用JsonServiceClient,无需IReturn

本文关键字:JsonServiceClient 无需 IReturn DTO ServiceStack | 更新日期: 2023-09-27 18:30:54

我想做的是:

var client = new JsonServiceClient(ServiceUrl);
var request = new FooQuery {Id = 1};
IEnumerable<Project> response = client.Get(request);

但是,我的 FooQuery 没有实现任何 IReturn,我希望它不会实现(它位于没有 ServiceStack 引用的库中)。这是我的服务方面:

业务对象库:

public class ProjectQuery
{
    public int Id { get; set; }
}

应用主机:

Routes.Add<ProjectQuery>("/project", "GET");

服务:

public object Get(Foo request)
{
     // do stuff.
}

有没有一些不错的、干净的方法来创建 JsonServiceClient,而无需在我的业务对象上使用 IReturn 接口?

ServiceStack:在DTO中使用JsonServiceClient,无需IReturn

如果您不想提供 JsonServiceClient Get() 请求的 URL,看起来没有办法不使用 IReturn。刚刚决定在我的 ServiceStack 实现中创建另一组 DTO,它们本质上是另一个库中真实 DTO 的镜像。然后,当请求进入我的 SS DTO 时,我创建其他库的 DTO,设置每个属性,并将其传递出去。

不漂亮,但这是我迄今为止能找到的最好的。

我在使用IReturn和Routes时遇到了同样的问题,因为我想使用DTO
。在具有业务逻辑的程序集中,没有服务堆栈引用。

它对我有用,在客户端模型中使用

   public class TestRequest
   {
        public int vendorId {get; set; }
        public string barcode {get; set; }     
        public string username { get; set; }   
        public string password { get; set; } 
   }    

然后在应用程序主机中

      Routes.Add<TestRequest( "/TestAPI/Reservation/{vendorId}/{barcode}"," GET,OPTIONS")   
            .Add<TestRequest>("/TestAPI/Reservation", "POST, OPTIONS")     

以及使用 POST 调用 JsonServiceClient

        request.vendorId=12344; 
        request.barcode="AAS1223"; 
        TestResponse response = client.Post<TestResponse>(server_ip + "/TestAPI/Reservation", request);  

或与获取

   TestResponse response = client.Get<TestResponse>(server_ip + "/TestAPI/Reservation/12344/AAS1223?username=John&password=99");     

然后在服务中获取或发布函数

      public TestResponse Get(TestRequest request)
      {    
         // request members  hold  the values of the url.
         return  DoBusinessLayerWork(request);
      }

使用 JsonServiceClient 类型的 Send() 方法是执行此操作的方法。

相关文章:
  • 没有找到相关文章