2017-03-07 5 views
1

세 가지 매개 변수의 조합을 전달할 수있는 메서드가 있으며이 매개 변수를 모두 사용할 수 있습니다. 나는 C#, 속성 라우팅을 사용하고 있으며 이것은 웹 API 프로젝트이다. 세 개의 매개 변수 모두에 대한 값을 전달하거나 매개 변수를 전달하지 않으면 모든 것이 잘 작동하고 멋지게 작동합니다. 그것은 신원이 본질적으로 명확하지 않은 단일 매개 변수가 전달되는 것을 의미합니다.

예와 함께 설명하는 저를 허용 :

을 나는 다음과 같은 한 : 나는 통과 할 때
하나의 API 메소드 호출에 대해 여러 선택적 매개 변수를 처리하려면 어떻게해야합니까?

[HttpGet] 
[Route("SomePath/{varOne:bool?}/{varTwo:bool?}/{varThree:int?}")] 
public async Task<IHttpActionResult> GetItems(bool? one, Bool? two, int? three){...} 


을만큼 내가 제로 또는 모든 매개 변수를 통과, 잘 모든 작품, 그것은이다 문제가 시작되는 단 하나 bool 값에서. 당신은 본다; 경로는 어떤 bool 매개 변수 (varOne 또는 varTwo)가 전달되고 있는지를 알 수있는 방법이 전혀 없으므로 올바른 데이터를 얻는 데 도움이되지 않는 첫 번째 매개 변수라고 가정합니다.

Help!

답변

0

온라인 간단한 연구 끝에 단 하나의 선택적 매개 변수가있는 것이 가장 좋습니다. 추론은 질문에서 설명한 내용에 따라 다소 차이가 있습니다. 그 차이를 알 수있는 방법이 절대적으로 없기 때문에 그 차이를 하나에 보관하십시오. 난 그냥 마지막 매개 변수에 전달 될 때
덧붙여, 나는 아무 문제가 없었다, 그리고는 int 형이 있다는 사실에 기인하고 명확하게 전달 받고있는 매개 변수를 알고 있었다. 여기

내 코드입니다 몇 가지 수정 후, 지금은 제대로 작동합니다. 당신이 아직도 관계없이 전달 될 매개 변수의 모든 것을 잡아 하나의 방법을 사용하고 볼 수 있듯이

[HttpGet] 
[Route("SomePath/{varOne:bool?}/{varTwo:bool?}/{varThree:int?}")] 
[Route("SomePath/{varThree:int?}")] 
[Route("SomePath/second/{varTwo:bool?}")] 
public async Task<IHttpActionResult> GetItems(bool? one, Bool? two, int? three){...} 

; 그러나이 과정을 진행하려면 Route 내에서 약간 다른 URL을 사용해야합니다. 3 가지 데이터 유형이 있다면 하나의 URL로 도망 갈 수 있다는 것을 알았습니다.
직선으로 연결되는 데 다소 시간이 걸렸으므로 거기에 넣어야 할 필요성을 느꼈습니다. 희망이 사람을 도움이됩니다.

+2

3 분 전에 질문을 게시하고 3 분 전 답변을 드린 점은 재미 있습니다 ... mhmh .. –

+0

자신의 질문에 답할 것을 권장합니다. 그러나 OP는 [codeproject] (https : /)와 같은 블로거와 혼동 스러울 것 같습니다. /www.codeproject.com/). – Win