繁体   English   中英

Servicestack-多个IReturn on Request DTO

[英]Servicestack - Multiple IReturn on Request DTO

请求DTO上可以有多个IReturn<>吗?

例如,以下路线:

[Route("/api/whatever", "GET,POST,PUT,DELETE")]
public class WhateverRequest : IReturn<bool>, IReturn<List<Whatever>>
{
    public string WhateverId { get; set; }
}

根据请求方法,我想要另一个IReturn 放入删除后请求仅在请求成功后才返回确认:

IReturn<bool>

但在GET请求中,我想要一个:

IReturn<List<Whatever>>

如果有一种方法可以在Swagger Api /元数据页面中反映出来,那也很好。 当前仅显示第一个IReturn

这是否可能,或者为每个不同的IReturn创建路由会更好吗?

您肯定要创建不同的路线来处理多种返回类型。 仅预期有一个IReturn<T>IReturnVoid ,否则使用方客户端将不知道如何正确键入返回的数据。

[Route("/api/whatever", "GET")]
public class ListWhateverRequest : IReturn<List<Whatever>>
{
    public string WhateverId { get; set; }
}

// Action
public List<Whatever> Get(ListWhateverRequest request)
{
    ...
}

[Route("/api/whatever", "POST,PUT,DELETE")]
public class UpdateWhateverRequest : IReturn<bool>
{
    public string WhateverId { get; set; }
}

// Action
public bool Post(UpdateWhateverRequest request)
{
    ...
}

public bool Put(UpdateWhateverRequest request)
{
    ...
}

public bool Delete(UpdateWhateverRequest request)
{
    ...
}

我认为您从这些方法返回的是true ,以表明它们已成功完成。 当出现问题时,这些方法是否返回false ,或者抛出异常? 如果你只在方法抛出异常,永不返回false然后而不是返回bool考虑使用void与方法IReturnVoid 因此,如果没有引发异常,则请求成功。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM