2017-12-01 34 views
0

PHP Laravel에서 API를 작성하고 swagger (2.0) 주석 (lib : darkaonline/l5-swagger, swagger-php을 사용)을 사용하여 swagger.json을 생성합니다. - 그러나 공간도 매우 무거운 필드가 API를 위@SWG Response에 사용 된 모델에서 일부 중첩 된 속성을 제외하는 방법

@SWG\Definition(
    definition="Space", 
    @SWG\Property(property="id", type="integer", example=33), 
    @SWG\Property(property="name", type="string"), 
    @SWG\Property(property="dataA", type="string", example="very long data string"), 
    @SWG\Property(property="dataB", type="string", example="very long data string"), 
), 

@SWG\Get(
    path="/api/v1/client/space/list", 
    @SWG\Response(response=200, description="OK", 
     @SWG\Schema(
       type="array", 
       @SWG\Items(ref="#/definitions/Space"), 
     ) 
    ) 
) 

공백이 (테이블 쇼)의 목록을 반환해야하지만, 난 단지 ID이름 얻을 필요가 : 나는 자신감을 다음 한 dataAdataB - 테이블에는 필요하지 않습니다. 별도의 필드를 만들지 않고이 필드를 제외 할 수있는 방법이 있습니까 응답을위한 공간 정의 (""을 반복하지 마십시오. 규칙)?

@SWG\Items(ref="#/definitions/Space", exclude={"dataA","dataB"}), 

를 그리고/또는

exclude={"dataA.securityField","dataA.someList[].heavyField"} 

처럼 더 중첩 된 필드를 제외 : 같은 것을 할 몇 가지 메커니즘이 있습니까?

추신 : 궁금한 사항은 질문/문제 here으로 알려주십시오.

답변

1

현재 exclude (보기 here)와 같은 기능에 대한 구현이 없습니다. 이 솔루션은 부분적으로 만족입니다

@SWG\Definition(
    definition="SpaceListEntry", 
    @SWG\Property(property="id", ref="#/definitions/Space/properties/id"), 
    @SWG\Property(property="name", ref="#/definitions/Space/properties/name"), 
) 

그리고 @SWG\Items(ref="#/definitions/Space"),

@SWG\Items(ref="#/definitions/SpaceListEntry"), 

로 변경 @SWG\Get에서 : 당신이 부분적으로 수용 가능한 방법을 다음과 같은 시도 할 수 있습니다하지만 (당신은 새로운 정의하지만 의 정의 재사용 부품 공간 정의를 작성) 그러나 의 전체 사본보다는 더 나은 공간 정의.