2017-01-23 48 views
3

我有類似以下揚鞭代碼註釋的文檔目的:揚鞭Spring註解:適當的響應格式

@RequestMapping(value = "/campaigns/{campaignUuid}", 
       method = RequestMethod.GET) 
@ApiOperation(value = "...", 
       httpMethod = "GET", 
       notes = "...", 
       response = XCampaign.class, 
       tags = { "Campaigns" }) 
@ApiResponses(value = { @ApiResponse(code = 200, 
            message = "OK", 
            response = XCampaign.class), 
         @ApiResponse(code = 401, 
            message = "Unauthorized", 
            response = HttpErrorResponse.class), 
         @ApiResponse(code = 400, 
            message = "Bad Request", 
            response = HttpErrorResponse.class), 
         @ApiResponse(code = 404, 
            message = "Not Found", 
            response = HttpErrorResponse.class), 
         @ApiResponse(code = 500, 
            message = "Internal Server Error", 
            response = HttpErrorResponse.class) }) 

基本上,我想有記錄在揚鞭以下對策:

在200:

{ 
    'campaign': { 
     ... 
    }, 
    links: { 
     ... 
    } 
} 

在4XX或5XX:

{ 
    error: { 
     ... 
    } 
} 

我遇到的問題是「嵌套」組件。如果我將類本身列爲Response類,那麼它顯然不會作爲嵌套的JSON返回。如果我嘗試它窩然而,就像如下:

然後揚鞭文檔顯示一個空對象:

HttpErrorResponse {}

我也採取了看看Spring HATEOAS,並認爲我將能夠實現2xx響應類型,我怎樣才能實現我想要的一般與嵌套類型?

回答

0

添加這樣的事情你Docket

.alternateTypeRules(
     newRule(typeResolver.resolve(DeferredResult.class, 
       typeResolver.resolve(ResponseEntity.class, WildcardType.class)), 
      typeResolver.resolve(WildcardType.class))) 

T替代DeferredResult<ResponseEntity<T>>一般,更多信息請參閱如何配置揚鞭here有用的GUID。

而且導入所有必需的lib,包括其中一個是棘手弄清楚:

import static springfox.documentation.schema.AlternateTypeRules.*;