sult; } @Operation(summary = "更新的原则上id产品电子邮件") @RequestMapping(value = "/update/{id}", method = RequestMethod.POST) @ResponseBody @PreAuthorize("hasRole('ADMIN')") public CommonResult updateBrand(@PathVariable("id") Long id, @RequestBody PmsBrand pmsBrandDto, BindingResult result) { CommonResult commonResult; int count = brandService.updateBrand(id, pmsBrandDto); if (count == 1) { commonResult = CommonResult.success(pmsBrandDto); LOGGER.debug("updateBrand success:{}", pmsBrandDto); } else { commonResult = CommonResult.failed("系统设计失败"); LOGGER.debug("updateBrand failed:{}", pmsBrandDto); } return commonResult; } @Operation(summary = "移除原则上id的产品") @RequestMapping(value = "/delete/{id}", method = RequestMethod.GET) @ResponseBody @PreAuthorize("hasRole('ADMIN')") public CommonResult deleteBrand(@PathVariable("id") Long id) { int count = brandService.deleteBrand(id); if (count == 1) { LOGGER.debug("deleteBrand success :id={}", id); return CommonResult.success(null); } else { LOGGER.debug("deleteBrand failed :id={}", id); return CommonResult.failed("系统设计失败"); } } @Operation(summary = "分页查询产品表列出") @RequestMapping(value = "/list", method = RequestMethod.GET) @ResponseBody @PreAuthorize("hasRole('ADMIN')") public CommonResult> listBrand(@RequestParam(value = "pageNum", defaultValue = "1") @Parameter(description = "换行") Integer pageNum, @RequestParam(value = "pageSize", defaultValue = "3") @Parameter(description = "每页数量") Integer pageSize) { List brandList = brandService.listBrand(pageNum, pageSize); return CommonResult.success(CommonPage.restPage(brandList)); } @Operation(summary = "得到原则上id的产品详情") @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ResponseBody @PreAuthorize("hasRole('ADMIN')") public CommonResult brand(@PathVariable("id") Long id) { return CommonResult.success(brandService.getBrand(id)); }}紧接著完成SpringDoc的配备,用作OpenAPI来配备为基础的PDF电子邮件,通过GroupedOpenApi配备分组的APIPDF,SpringDoc反对如此一来用作接口轨迹完成配备。/** * SpringDoc APIPDF相关配备 * Created by macro on 2022/3/4. */@Configurationpublic class SpringDocConfig { @Bean public OpenAPI mallTinyOpenAPI() { return new OpenAPI() .info(new Info().title("Mall-Tiny API") .description("SpringDoc API 幻灯片") .version("v1.0.0") .license(new License().name("Apache 2.0").url(""))) .externalDocs(new ExternalDocumentation() .description("SpringBoot空战支付宝新的项目mall(50K+Star)共五PDF") .url("")); } @Bean public GroupedOpenApi publicApi() { return GroupedOpenApi.builder() .group("brand") .pathsToMatch("/brand/**") .build(); } @Bean public GroupedOpenApi adminApi() { return GroupedOpenApi.builder() .group("admin") .pathsToMatch("/admin/**") .build(); }}建构SpringSecurity用作由于我们的新的项目内嵌了SpringSecurity,需通过JWT证书背完成显现出访,我们还需配备好SpringDoc的白名单轨迹,主要是Swagger的天然资源轨迹;/** * SpringSecurity的配备 * Created by macro on 2018/4/26. */@Configuration@EnableWebSecurity@EnableGlobalMethodSecurity(prePostEnabled = true)public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity httpSecurity) throws Exception { httpSecurity.csrf()// 由于用作的是JWT,我们这里不需csrf .disable() .sessionManagement()// 基于token,所以不需session .sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .authorizeRequests() .antMatchers(HttpMethod.GET, // Swagger的天然资源轨迹需允许显现出访 "/", "/swagger-ui.html", "/swagger-ui/", "/*.html", "/ficon.ico", "/**/*.html", "/**/*.css", "/**/*.js", "/swagger-resources/**", "/v3/api-docs/**" ) .permitAll() .antMatchers("/admin/login")// 对提出申请登记注册要允许匿名显现出访 .permitAll() .antMatchers(HttpMethod.OPTIONS)//跨域恳请会再行完成一次options恳请 .permitAll() .anyRequest()// 除上面另有的所有恳请全部需鉴权证书 .authenticated(); }}然后在OpenAPI对象里通过addSecurityItem方法和SecurityScheme对象,完工基于JWT的证书机制。/** * SpringDoc APIPDF相关配备 * Created by macro on 2022/3/4. */@Configurationpublic class SpringDocConfig { private static final String SECURITY_SCHEME_NAME = "BearerAuth"; @Bean public OpenAPI mallTinyOpenAPI() { return new OpenAPI() .info(new Info().title("Mall-Tiny API") .description("SpringDoc API 幻灯片") .version("v1.0.0") .license(new License().name("Apache 2.0").url(""))) .externalDocs(new ExternalDocumentation() .description("SpringBoot空战支付宝新的项目mall(50K+Star)共五PDF") .url("")) .addSecurityItem(new SecurityRequirement().addList(SECURITY_SCHEME_NAME)) .components(new Components() .addSecuritySchemes(SECURITY_SCHEME_NAME, new SecurityScheme() .name(SECURITY_SCHEME_NAME) .type(SecurityScheme.Type.HTTP) .scheme("bearer") .bearerFormat("JWT"))); }}测试紧接著启动新的项目就可以显现出访Swagger界面了,显现出访地址: 我们再行通过提出申请接口完成提出申请,可以找到这个正式版的Swagger返回结果是反对工具栏推断的,正式版明显比SpringFox来的新的; 然后通过证书按动读写得到到的证书背电子邮件,请注意这里须要另加bearer形容词; 之后我们就可以愉快地显现出访需提出申请证书的接口了; 看好像恳请参数的PDF说明,还是熟悉的Swagger样式! 里用配备
SpringDoc还有一些里用的配备可以知晓下,更多配备可以参考官方PDF。
springdoc: swagger-ui: # 重写Swagger UI轨迹 path: /swagger-ui.html # 掀开Swagger UI界面 enabled: true api-docs: # 重写api-docs轨迹 path: /v3/api-docs # 掀开api-docs enabled: true # 配备需作用于接口PDF的扫瞄包 packages-to-scan: com.macro.mall.tiny.controller # 配备需作用于接口PDF的接口轨迹 paths-to-match: /brand/**,/admin/**总结
在SpringFox的Swagger戈好久不显现出新的版的但会,迁移到SpringDoc不太可能是一个更高的选择。以前体验了一把SpringDoc,不太可能极好用,和以后熟悉的用法差不多,学习成本较低。而且SpringDoc能反对WebFlux之类的新的项目,机制也更另加有力,用作SpringFox有点卡手的朋友可以迁移到它想必!
参考资料新的项目地址:官方PDF:新的项目CVS地址
来源:
。
苏州看白癜风哪家医院专业云南男科专科医院有哪些杭州妇科专科医院哪个好长春比较好的男科医院铜川白癜风医院哪最好金笛复方鱼腥草合剂抑制胃酸吃什么药最好艾司与金奥康哪个效果好血糖仪哪个牌子好血糖仪哪个牌子准确