2014-01-20 4 views
1

DTO 요청시 복수 IReturn<>이 가능합니까? 경로 다음과 같은 예를 들어서비스 요청 - 요청시 다중 IReturn DTO

:

[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

Caribertl에서 개별 경로를 사용하여 정렬 할 수 있었습니까? – Scott

+0

Scott, 대단히 감사합니다! 각 반환 형식에 대해 다른 경로를 갖도록 코드를 변경했습니다. 이제 WhateverGetRequest, WhateverPostRequest' ... 메타 데이터/swagger 페이지에는 각 경로에 필요한 매개 변수 만 표시됩니다. 또한'IReturnVoid'와 함께 팁을 주셔서 감사합니다 –

+0

. 네가 일하는 것이 멋지다. :) – Scott

답변

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를 반환하는 경우 boolIReturnVoid과 함께 void 메서드를 사용하는 것이 좋습니다. 따라서 요청이 예외를 throw하지 않으면 요청이 성공합니다.