服务堆栈 - 多个 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,则考虑将void方法与IReturnVoid一起使用,而不是返回bool。因此,如果请求不引发异常,则请求成功。

最新更新