【问题标题】:Servicestack - Multiple IReturn on Request DTOServicestack - 请求 DTO 的多个 IReturn
【发布时间】:2014-01-20 10:03:17
【问题描述】:

一个请求 DTO 上是否可以有多个 IReturn<>

例如以下路线:

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

根据请求方法,我想要另一个IReturn。 Post-Put-Delete Request 只有在请求成功时才应返回确认:

IReturn<bool>

但是对于 GET 请求,我想要一个:

IReturn<List<Whatever>>

如果有办法在 Swagger Api/元数据页面中反映这一点也很好。 目前只显示第一个IReturn

这是可能的还是为每个不同的IReturn 创建一个路由会更好?

【问题讨论】:

  • Caribertl 您是否设法使用单独的路线对此进行了排序?
  • 斯科特,非常感谢!我更改了我的代码,为每种返回类型提供不同的路线。现在我有一个WhateverGetRequestWhateverPostRequest ... 这样元数据/招摇页面也只显示每条路线所需的参数。也感谢IReturnVoid的提示
  • 不客气。太好了,你让它工作。 :)

标签: c# servicestack swagger-ui servicestack-bsd


【解决方案1】:

您肯定希望创建不同的路由来处理多种返回类型。预计只有一个IReturn&lt;T&gt;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,那么请考虑将 void 方法与 IReturnVoid 一起使用,而不是返回 bool。因此,如果它没有抛出异常,则请求成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-02
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多