一个请求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
。因此,如果请求不引发异常,则请求成功。