@Test public void articleById() throws Exception { int articleId = new Random().nextInt(10); ResultActions result = this.mockMvc.perform( get("/api/article/" + articleId + "?selection=title!id") .contentType(MediaType.APPLICATION_JSON_UTF8) .characterEncoding(UTF_8) ) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$.title", CoreMatchers.startsWith("文章标题"))); String content = result.andReturn().getResponse().getContentAsString(); System.out.println(content); }
@IdProvider @GetMapping("/{articleId:\\d+}") public Article articleById(@PathVariable int articleId) { return articleService.getById( articleId, SelectionHandler.getSelections() ); }
ArticleController { @IdProvider @GetMapping("/{articleId:\\d+}") public Article articleById(@PathVariable int articleId) { return articleService.getById( articleId, SelectionHandler.getSelections() ); } }
ArticleController { @IdProvider @GetMapping("/{articleId:\\d+}") public Article articleById(@PathVariable int articleId) { return articleService.getById( articleId, SelectionHandler.getSelections() ); }  }
ArticleController { @IdProvider @GetMapping("/{articleId:\\d+}") public Article articleById(@PathVariable int articleId) { return articleService.getById( articleId, SelectionHandler.getSelections() ); }  @IdProvider //声明成IdProvider，通过外键关联的就是通过此接口获取到实体的详情信息的 @GetMapping("/{articleId:\\d+}") Article articleById(@PathVariable int articleId); @IdsProvider //批量查询接口，引擎检测到可以合并请求时，会合并多个id，调用这个接口。默认分隔符是半角逗号，也可以配置当前注解属性进行修改。批量接口，返回不需要按ids的顺序返回，而是交由引擎处理 @GetMapping List<Article> articleByIds(@RequestParam String ids); @GraphqlSelection("list") //如果返回的字段里包裹了多层，可以通过此声明指定selection的前缀 @GetMapping("/search") //所有的Query都必须是Get请求，否则会变成Mutation！ BasePagedList<Article> articleSearch(ArticleQuery query); @PostMapping //非Get方法，会生成到GraphQL Schema的Mutation内，如果有需要写操作后也可以返回需要的字段 Article articleSave(@RequestBody ArticleSave request); @DeleteMapping("/{id:\\d+}") //非Get方法，会生成到GraphQL Schema的Mutation内，如果有需要写操作后也可以返回需要的字段 Article articleDelete(@PathVariable int id); }
ArticleController { @IdProvider @GetMapping("/{articleId:\\d+}") public Article articleById(@PathVariable int articleId) { return articleService.getById( articleId, SelectionHandler.getSelections() ); }  @IdProvider //声明成IdProvider，通过外键关联的就是通过此接口获取到实体的详情信息的 @GetMapping("/{articleId:\\d+}") Article articleById(@PathVariable int articleId); @IdsProvider //批量查询接口，引擎检测到可以合并请求时，会合并多个id，调用这个接口。默认分隔符是半角逗号，也可以配置当前注解属性进行修改。批量接口，返回不需要按ids的顺序返回，而是交由引擎处理 @GetMapping List<Article> articleByIds(@RequestParam String ids); @GraphqlSelection("list") //如果返回的字段里包裹了多层，可以通过此声明指定selection的前缀 @GetMapping("/search") //所有的Query都必须是Get请求，否则会变成Mutation！ BasePagedList<Article> articleSearch(ArticleQuery query); @PostMapping //非Get方法，会生成到GraphQL Schema的Mutation内，如果有需要写操作后也可以返回需要的字段 Article articleSave(@RequestBody ArticleSave request); @DeleteMapping("/{id:\\d+}") //非Get方法，会生成到GraphQL Schema的Mutation内，如果有需要写操作后也可以返回需要的字段 Article articleDelete(@PathVariable int id);  }