2017-06-20 7 views
0

サービスをテストするためのUIアプリケーションを作成しました。 UIはFooServiceUIとの関係があります。 FooServiceUIは、クライアントを使用してBarServiceAccessor(fooserviceuiのインタフェースとして実装されています)にリクエストを送信します。しかし、このようなクライアントの返信を偽って、feignクライアントを使用すると、Springサービスがコンテンツを返しません。

{"datas": [PagedResource { content: [], metadata: Metadata { number: 0, total pages: 1, total elements: 3, size: 200 }, links: [] }]} 

BarServiceに直接リクエストを送信すると、これらのすべてのデータが表示されます。

FooService getAllメソッド;

@RequestMapping(method = RequestMethod.GET, path = "/api/datas/") 
public ResponseEntity<String> getAllDatas() 
{ 
    PagedResources<DataResource> responseEntity = null; 

    try 
    { 
     responseEntity = dataManagementAccessor.getAll(0, 200); 
    } 
    catch (Exception e) 
    { 
     LOG.error("Exception " + e.toString()); 
    } 
    return ResponseEntity.ok() 
      .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE) 
      .body("{\"datas\": [" + responseEntity + "]}"); 
} 

アクセッサ;

@FeignClient("https://datamanagement") 
public interface DataManagementAccessor{ 
@RequestMapping(value = "/api/datas/", method = GET) 
    PagedResources<DataResource> getAll(@RequestParam("page") final Integer page, 
     @RequestParam("size") final Integer size); 
} 

BarServiceコードは以下のようになります。

@RequestMapping(method = GET) 
@ResponseStatus(OK) 
@ApiOperation(value = "Get all datas") 
@ApiResponses(value = {@ApiResponse(code = SC_OK, message = "OK", response = DataPageResponse.class), 
     @ApiResponse(code = SC_BAD_REQUEST, message = BAD_REQUEST_MESSAGE, response = String.class), 
     @ApiResponse(code = SC_UNAUTHORIZED, message = UNAUTHORIZED_MESSAGE, response = String.class), 
     @ApiResponse(code = SC_FORBIDDEN, message = FORBIDDEN_MESSAGE, response = String.class), 
     @ApiResponse(code = SC_NOT_FOUND, message = NOT_FOUND_MESSAGE, response = String.class)}) 
    public PagedResources<Resource<DataResource>> getAll(@PageableDefault(sort = {"name"}) final Pageable pageable, 
     final PagedResourcesAssembler<DataResource> pagedAssembler) 
{ 
    final Page<DataData> allDatas = dataService.getAllDatas(pageable); 

    final Page<DataResource> pagedResources = allDatas.map(
      d-> conversionService.convert(d, DataResource.class)); 
    pagedResources.forEach(resource -> controllerLinkHandler.addDataResourceLink(resource)); 
    return pagedAssembler.toResource(pagedResources); 
} 

私はすでにクライアントサービスのGradleのに春のJPAを追加しようとしましたともストリームAPIのコレクションが、まだdoesntの仕事を用途に応じてマッピングを変更しようとしました。

応答で_embedded行をシリアル化すると正しく動作しないことがありますか?

答えて

0

@EnableHypermediaSupport(タイプ= EnableHypermediaSupport.HypermediaType.HAL)

iがメインメソッドでこの行を追加するのを忘れました。

関連する問題