是否可以在请求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
创建路线更好?
答案 0 :(得分:2)
您肯定希望创建不同的路由来处理多种返回类型。只需要一个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
。因此,如果请求没有抛出异常,则该请求成功。