2014-11-14 4 views
1

복잡한 객체의 요청 본문을 각 입력란에 입력 할 때마다 표현할 수 있습니까?Swagger Spring mvc reponsebody

간단한 말로하면 내 api 중 하나가 @RequestBody로 Person (성/이름이 있다고 가정)을 기대하면이 Person에게 Swagger를 제공하는 유일한 방법은 Person의 전체 json을 제공하는 것입니다. 각각의 개별 필드가 예를 들어 성/이름에 대한 별도의 입력을 갖도록하는 방법이 있습니까?

답변

1

당신은 당신의 작업은 당신이 예를 들어

을 찾고 정확히 어떻게해야 @ModelAttribute를 사용하여 주석을 경우 대신

public void updatePersonName(@RequestBody Person person) { ... } 

사용이

public void updatePersonName(@ModelAttribute Person person) { ... } 

의 @ModelAttribute는 원시적 인 속성을 확장되고 자신감 UI의 성과 이름에 입력하는 필드를 제공합니다. 그 작업의 동등한은

public void updatePersonName(@RequestParam String firstName, 
          @RequestParam String lastName) { ... } 
+0

이지만 불행히도 이런 일은 일어나지 않습니다. 나는 그 문제도 제기했다 – Eugene

+0

링크? 모델 속성이 getter 및 setter를 사용하여 bean 속성 *이되어야한다는 경고와 함께 작동해야합니다. –

+0

setter 대신에 생성자가 있다면 - 클래스는 변경 불가능합니다. 그게 효과가 있니? – Eugene

0

기본 스와 저 UI로 스와지나를 사용하고 있습니다. 스 태거 UI 코드를 변경하지 않으면 가능하지 않다고 생각합니다. 그러나 매우 편리한 솔루션은 매개 변수의 유형을 정의한 다음 해당 유형에 대한 모델을 제공하는 것입니다. 예를

"parameters": [ 
       { 
        "in": "body", 
        "name": "body", 
        "description": "A Person", 
        "required": true, 
        "type": "Person" 
       } 
      ] 

그리고

"definitions": { 
    "Person": { 
     "properties": { 
      "firstName": { 
       "type": "string" 
      }, 
      "lastName": { 
       "type": "string" 
      } 
     } 
     } 
    } 

이 방법의 경우 모델은 UI에 표시하면 요청 본문 텍스트 상자에 복사 한 컨텐츠를 수동으로 채우기 쉽게 할 수 있습니다.

+0

입니다. 단지 옵션 :) thx이지만 – Eugene