2017-12-05 2 views
2

나는 다음과 같은 웹 API 방법에 대한 자신감의 문서와 자신감 UI를 생성하는 Swashbuckle를 사용 찾고 있어요 (이것은 PDF 파일로 편지 병합 효과적인 메시지의) :이 현재 작동하지 않는Swagger UI에서 사전 매개 변수를 사용하려면 어떻게해야합니까?

[HttpPost] 
    [ResponseType(typeof(byte[]))] 
    public HttpResponseMessage MergeValues([FromUri]Dictionary<string, string> mergeValues, 
              [FromBody]byte[] pdfTemplate) 
    { 
     return MergeStuff(); 
    } 

, 또는 적어도 결과 Swagger UI와 상호 작용하는 방법을 모르겠다.

이것은 다음과 같은 Swagger UI를 만듭니다.이 UI는 합리적인 것처럼 보이지만 올바르게 채우려면 어떻게해야할지 모르겠다. 최신 Nuget의 모든 기본 Swashbuckle 설정을 사용하고 있습니다.

바이트 배열 : 바이트 배열에 대해 Base64 인코딩 텍스트를 입력하면 바이트 배열에 항상 null이 표시됩니다. 밝혀졌습니다. BASE64 텍스트를 큰 따옴표로 묶어야합니다. 그러면 작동합니다.

사전 : 다양한 유형의 JSON 표현식 (배열, 객체 등)을 시도했으며 사전에 값을 입력 할 수 없으므로 결과 사전 객체에는 0 개의 항목이 있습니다.

enter image description here

나는 상황을 타개 할 수있는 능력을 가지고 있고이 작업을 수행 할 수있는 방법을 알고 싶습니다. 예를 들어 사전을 KeyValuePair<string,string> 배열로 변경하면 도움이됩니다.

  1. 이 문자열이 입력 유형을 변경하고 내 자신의 설명서를 직렬화/디코딩을 수행 :

    옵션 난 내가 피할 싶은 것을 가지고 것을 알고있다. 나는 나의 타입에 대해 명백하게하고 싶지 않고 너무 화려하지 않아야한다.

  2. 맞춤형 바인더. 유지 보수 할 코드/복잡성이 적기 때문에 표준/기본 바인더를 사용하고 싶습니다.
+1

파일을 업로드하려고하는 것처럼 보입니다. https://github.com/domaindrivendev/Swashbuckle/issues/120 – HelderSepu

+0

사실, 'byte []'파일이 있습니다. 내 base64 콘텐츠 주위에 큰 따옴표가 필요합니다. 따옴표로 작동합니다. 이제 '사전'을 처리하는 방법을 알아야합니다. – Jaxidian

답변

0

제 질문은 정말 두 가지 질문이었습니다.

질문 1 :바이트 배열에 대한 데이터를 어떻게 채울 수 있습니까?

대답 1 : 그것을 위해 당신의 base64 인코딩 값 붙여 넣기하지만 시작과 끝에서 모두 큰 따옴표로 콘텐츠를 둘러싸고해야합니다.

질문 2 :사전에 대한 데이터는 어떻게 작성합니까?

는 대답 2 : 그것은 [FromUri] 작동하지 않지만, 이것은 [FromBody] (중 Dictionary 또는 IDictionary<string,string>이 작동합니다)와 함께 작동이되지 않는 이유

{"FirstName":"John","LastName":"Doe"} 

잘 모르겠어요 FromUri으로 작업하지만,이 질문보다 훨씬 더 집중된 질문을 할 것입니다.이 질문의 목적을 위해, 두 매개 변수는 모두 [FromBody]으로 표시된 DTO에 넣을 수 있으며, 모두 양호합니다.

관련 문제