1

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

例如以下路线:

[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

4

1 回答 1

2

您肯定希望创建不同的路由来处理多种返回类型。只有一个IReturn<T>orIReturnVoid是预期的,或者消费客户端不知道如何正确键入返回的数据。

[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. 因此,如果它没有引发异常,则该请求是成功的。

于 2014-01-20T23:09:49.123 回答