diff --git a/spring-boot-swagger/src/main/java/com/jnssd/config/SwaggerConfig.java b/spring-boot-swagger/src/main/java/com/jnssd/config/SwaggerConfig.java index 3651444..d6e2afc 100644 --- a/spring-boot-swagger/src/main/java/com/jnssd/config/SwaggerConfig.java +++ b/spring-boot-swagger/src/main/java/com/jnssd/config/SwaggerConfig.java @@ -1,128 +1,131 @@ -// package com.jnssd.config; -// -// import io.swagger.annotations.ApiOperation; -// import org.springframework.context.annotation.Bean; -// import org.springframework.context.annotation.Configuration; -// import springfox.documentation.builders.ApiInfoBuilder; -// import springfox.documentation.builders.OAuthBuilder; -// import springfox.documentation.builders.PathSelectors; -// import springfox.documentation.builders.RequestHandlerSelectors; -// import springfox.documentation.oas.annotations.EnableOpenApi; -// import springfox.documentation.service.*; -// import springfox.documentation.spi.DocumentationType; -// import springfox.documentation.spi.service.contexts.SecurityContext; -// import springfox.documentation.spring.web.plugins.Docket; -// import springfox.documentation.swagger.web.ApiKeyVehicle; -// import springfox.documentation.swagger.web.SecurityConfiguration; -// import springfox.documentation.swagger.web.SecurityConfigurationBuilder; -// import springfox.documentation.swagger2.annotations.EnableSwagger2; -// -// import java.util.ArrayList; -// import java.util.Collections; -// import java.util.List; -// -// /** -// *

spring-boot-openapi

-// *

-// * -// * @author zxj -// * @since 2023-10-12 17:13:09 -// */ -// @Configuration -// @EnableSwagger2 -// @EnableOpenApi -// public class SwaggerConfig { -// -// @Bean -// public Docket api() { -// return new Docket(DocumentationType.SWAGGER_2) -// .apiInfo(apiInfo()) -// .select() -// // 扫描特定包 -// // 扫描所有有注解的api,用这种方式更灵活 -// // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) -// //.apis(RequestHandlerSelectors.any()) -// .apis(RequestHandlerSelectors.basePackage("com.jnssd")) -// .paths(PathSelectors.any()) -// .build() -// .securitySchemes(initSecuritySchemeList()) -// .securityContexts(Collections.singletonList(securityContext())); -// } -// public ApiInfo apiInfo() { -// return new ApiInfoBuilder() -// .title("Swagger项目测试") -// .description("novel项目接口文档") -// .build(); -// } -// -// private SecurityContext securityContext() { -// return SecurityContext.builder() -// .securityReferences(Collections.singletonList(new SecurityReference("OAuth2", new AuthorizationScope[0]))) -// .build(); -// } -// -// private List scopes() { -// List list = new ArrayList<>(); -// list.add(new AuthorizationScope("read_scope", "Grants read access")); -// list.add(new AuthorizationScope("write_scope", "Grants write access")); -// list.add(new AuthorizationScope("admin_scope", "Grants read write and delete access")); -// return list; -// } -// -// public List initSecuritySchemeList() { -// List list = new ArrayList<>(); -// list.add(securitySchemeOAuth2()); -// list.add(securitySchemeApiKey()); -// // list.add(securitySchemeHttp()); -// list.add(securitySchemeBasicAuth()); -// list.add(securitySchemeOauth2Schema()); -// return list; -// } -// -// private SecurityScheme securitySchemeOAuth2() { -// List grantTypes = new ArrayList<>(); -// grantTypes.add(new ResourceOwnerPasswordCredentialsGrant("/oauth/token")); -// return new OAuthBuilder() -// .name("OAuth2") -// .scopes(scopes()) -// .grantTypes(grantTypes) -// .build(); -// } -// -// private SecurityScheme securitySchemeApiKey() { -// return new ApiKey("Authorization", "api_key", ApiKeyVehicle.HEADER.getValue()); -// } -// -// private SecurityScheme securitySchemeHttp() { -// return HttpAuthenticationScheme.JWT_BEARER_BUILDER.name("JWT").build(); -// } -// -// private SecurityScheme securitySchemeBasicAuth() { -// return new BasicAuth("basicAuth"); -// } -// -// private SecurityScheme securitySchemeOauth2Schema() { -// List grantTypes = new ArrayList<>(); -// TokenRequestEndpoint tokenRequestEndpoint = new TokenRequestEndpoint("/oauth/authorize", "", ""); -// TokenEndpoint tokenEndpoint = new TokenEndpoint("/oauth/token", "token"); -// grantTypes.add(new AuthorizationCodeGrant(tokenRequestEndpoint, tokenEndpoint)); -// return new OAuthBuilder() -// .name("oauth2schema") -// .scopes(scopes()) -// .grantTypes(grantTypes) -// .build(); -// } -// -// @Bean -// public SecurityConfiguration security() { -// return SecurityConfigurationBuilder.builder() -// .clientId("") -// .clientSecret("") -// .realm("*") -// .appName("") -// .scopeSeparator("") -// .useBasicAuthenticationWithAccessCodeGrant(false) -// .build(); -// } -// -// } +package com.jnssd.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.OAuthBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.oas.annotations.EnableOpenApi; +import springfox.documentation.service.*; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger.web.ApiKeyVehicle; +import springfox.documentation.swagger.web.SecurityConfiguration; +import springfox.documentation.swagger.web.SecurityConfigurationBuilder; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + *

spring-boot-openapi

+ *

+ * + * @author zxj + * @since 2023-10-12 17:13:09 + */ +@Configuration +@EnableSwagger2 +@EnableOpenApi +public class SwaggerConfig { + + private final String[] securitySchemeNames = {"ApiKey模式", "basicAuth模式", "oauth2的Password模式", "oauth2的authorization_code模式", "oauth2的implicit模式", "oauth2的clientCredentials模式"}; + + + @Bean + public Docket api() { + return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() + // 扫描特定包 + // 扫描所有有注解的api,用这种方式更灵活 + // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) + //.apis(RequestHandlerSelectors.any()) + .apis(RequestHandlerSelectors.basePackage("com.jnssd")).paths(PathSelectors.any()).build().securitySchemes(initSecuritySchemeList()).securityContexts(Collections.singletonList(securityContext())); + } + + public ApiInfo apiInfo() { + return new ApiInfoBuilder().title("Swagger项目测试").description("novel项目接口文档").build(); + } + + + + public List initSecuritySchemeList() { + List list = new ArrayList<>(); + list.add(securitySchemeBasicAuth()); + list.add(securitySchemeApiKey()); + + // oauth2下的几个模式配置 + // 1. 密码模式 + list.add(securitySchemeOAuth2Password()); + // 2. 客户端模式 + list.add(securitySchemeOAuth2ClientCredentials()); + // 3. 授权码模式 + list.add(securitySchemeOAuth2AuthorizationCode()); + // 4. 简化模式 + list.add(securitySchemeOAuth2Implicit()); + return list; + } + + // ApiKey模式 + private SecurityScheme securitySchemeApiKey() { + return new ApiKey("ApiKey模式", "Authorization", ApiKeyVehicle.HEADER.getValue()); + } + + // basicAuth模式 + private SecurityScheme securitySchemeBasicAuth() { + return new BasicAuth("basicAuth模式"); + } + + // oauth2下面的password模式 + private SecurityScheme securitySchemeOAuth2Password() { + List grantTypes = new ArrayList<>(); + grantTypes.add(new ResourceOwnerPasswordCredentialsGrant("/oauth/token")); + return new OAuthBuilder().name("oauth2的Password模式").scopes(scopes()).grantTypes(grantTypes).build(); + } + + // oauth2下面的authorization_code模式 + private SecurityScheme securitySchemeOAuth2AuthorizationCode() { + List grantTypes = new ArrayList<>(); + TokenRequestEndpoint tokenRequestEndpoint = new TokenRequestEndpoint("/oauth/authorize", "", ""); + TokenEndpoint tokenEndpoint = new TokenEndpoint("/oauth/token", "token"); + grantTypes.add(new AuthorizationCodeGrant(tokenRequestEndpoint, tokenEndpoint)); + return new OAuthBuilder().name("oauth2的authorization_code模式").scopes(scopes()).grantTypes(grantTypes).build(); + } + + // oauth2下面的implicit模式 + private SecurityScheme securitySchemeOAuth2Implicit() { + List grantTypes = new ArrayList<>(); + ImplicitGrant implicitGrant = new ImplicitGrant(new LoginEndpoint("/oauth/authorize"), "token"); + grantTypes.add(implicitGrant); + return new OAuthBuilder().name("oauth2的implicit模式").scopes(scopes()).grantTypes(grantTypes).build(); + } + + // oauth2下面的ClientCredentials模式 + private SecurityScheme securitySchemeOAuth2ClientCredentials() { + List grantTypes = new ArrayList<>(); + grantTypes.add(new ClientCredentialsGrant("/oauth/token")); + return new OAuthBuilder().name("oauth2的clientCredentials模式").scopes(scopes()).grantTypes(grantTypes).build(); + } + + private SecurityContext securityContext() { + List list = new ArrayList<>(); + Arrays.stream(securitySchemeNames).forEach(s -> list.add(new SecurityReference(s, new AuthorizationScope[0]))); + return SecurityContext.builder().securityReferences(list).build(); + } + + private List scopes() { + List list = new ArrayList<>(); + list.add(new AuthorizationScope("read_scope", "Grants read access")); + list.add(new AuthorizationScope("write_scope", "Grants write access")); + list.add(new AuthorizationScope("admin_scope", "Grants read write and delete access")); + return list; + } + @Bean + public SecurityConfiguration security() { + return SecurityConfigurationBuilder.builder().clientId("").clientSecret("").realm("*").appName("").scopeSeparator("").useBasicAuthenticationWithAccessCodeGrant(false).build(); + } + +} diff --git a/spring-boot-swagger/src/main/java/com/jnssd/config/SwaggerOpenApiConfig.java b/spring-boot-swagger/src/main/java/com/jnssd/config/SwaggerOpenApiConfig.java index bc83436..4fa7eb2 100644 --- a/spring-boot-swagger/src/main/java/com/jnssd/config/SwaggerOpenApiConfig.java +++ b/spring-boot-swagger/src/main/java/com/jnssd/config/SwaggerOpenApiConfig.java @@ -1,145 +1,162 @@ -package com.jnssd.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import springfox.documentation.builders.*; -import springfox.documentation.oas.annotations.EnableOpenApi; -import springfox.documentation.service.*; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spi.service.contexts.SecurityContext; -import springfox.documentation.spring.web.plugins.Docket; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - *

spring-boot-openapi

- *

配置openapi

- * - * @author zxj - * @since 2023-10-13 14:29:58 - */ - -@Configuration -@EnableOpenApi -public class SwaggerOpenApiConfig { - - @Bean - public Docket api() { - return new Docket(DocumentationType.OAS_30) - .apiInfo(apiInfo()) - .select() - // 扫描特定包 - // 扫描所有有注解的api,用这种方式更灵活 - // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) - //.apis(RequestHandlerSelectors.any()) - .apis(RequestHandlerSelectors.basePackage("com.jnssd")) - .paths(PathSelectors.any()) - .build() - .securitySchemes(initSecuritySchemeList()) - .securityContexts(Collections.singletonList(securityContext())); - } - - public ApiInfo apiInfo() { - return new ApiInfoBuilder() - .title("Swagger项目测试") - .description("novel项目接口文档") - .build(); - } - - private List initSecuritySchemeList() { - - List list = new ArrayList<>(); - list.add(httpAuthenticationScheme()); - list.add(securitySchemeApiKey()); - list.add(securitySchemeOpenIdConnect()); - - // 配置oauth2的几种模式 - list.add(securitySchemeOauth2ClientCredentials()); - list.add(securitySchemeOauth2implicit()); - list.add(securitySchemeOauth2Password()); - list.add(securitySchemeOauth2AuthorizationCode()); - return list; - } - - private SecurityScheme httpAuthenticationScheme() { - return HttpAuthenticationScheme.JWT_BEARER_BUILDER.name("JWT的值").build(); - } - - // ApiKey模式 - private SecurityScheme securitySchemeApiKey() { - return new ApiKey("Authorization授权", "Authorization", "header"); - } - - // OpenIdConnect - private SecurityScheme securitySchemeOpenIdConnect() { - return new OpenIdConnectSchemeBuilder() - .name("OpenId授权") - .description("OpenIdConnect授权配置") - .openIdConnectUrl("/oauth/authorize") - .build(); - } - - // 客户端模式 - private SecurityScheme securitySchemeOauth2ClientCredentials() { - return OAuth2Scheme.OAUTH2_CLIENT_CREDENTIALS_FLOW_BUILDER - .name("客户端模式") - .tokenUrl("/oauth/authorize") - .scopes(scopes()) - .build(); - } - - // 隐式模式 - private SecurityScheme securitySchemeOauth2implicit() { - return OAuth2Scheme.OAUTH2_IMPLICIT_FLOW_BUILDER - .name("简化模式") - .authorizationUrl("/oauth/authorize") - .scopes(scopes()) - .build(); - } - - // 密码模式 - private SecurityScheme securitySchemeOauth2Password() { - return OAuth2Scheme.OAUTH2_PASSWORD_FLOW_BUILDER - .name("密码模式") - .tokenUrl("/oauth/token") - .scopes(scopes()) - .build(); - } - - // 授权码模式 - private SecurityScheme securitySchemeOauth2AuthorizationCode() { - return OAuth2Scheme.OAUTH2_AUTHORIZATION_CODE_FLOW_BUILDER - .name("授权码模式") - .authorizationUrl("/oauth/authorize") - .tokenUrl("/oauth/token") - .scopes(scopes()) - .build(); - } - - private List scopes() { - List list = new ArrayList<>(); - list.add(new AuthorizationScope("read_scope", "Grants read access")); - list.add(new AuthorizationScope("write_scope", "Grants write access")); - list.add(new AuthorizationScope("admin_scope", "Grants read write and delete access")); - return list; - } - - private SecurityContext securityContext() { - return SecurityContext.builder() - .securityReferences(defaultAuth()) - .operationSelector(operationContext -> { - System.out.println("operationContext" + operationContext); - return !operationContext.httpMethod().name().equals("GET"); - }) - .build(); - } - - private List defaultAuth() { - AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); - AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; - authorizationScopes[0] = authorizationScope; - return Collections.singletonList(new SecurityReference("密码模式", authorizationScopes)); - } -} +// package com.jnssd.config; +// +// import org.springframework.context.annotation.Bean; +// import org.springframework.context.annotation.Configuration; +// import org.springframework.util.AntPathMatcher; +// import springfox.documentation.builders.ApiInfoBuilder; +// import springfox.documentation.builders.OpenIdConnectSchemeBuilder; +// import springfox.documentation.builders.PathSelectors; +// import springfox.documentation.builders.RequestHandlerSelectors; +// import springfox.documentation.oas.annotations.EnableOpenApi; +// import springfox.documentation.service.*; +// import springfox.documentation.spi.DocumentationType; +// import springfox.documentation.spi.service.contexts.SecurityContext; +// import springfox.documentation.spring.web.plugins.Docket; +// +// import java.util.ArrayList; +// import java.util.Collections; +// import java.util.List; +// +// /** +// *

spring-boot-openapi

+// *

配置openapi

+// * +// * @author zxj +// * @since 2023-10-13 14:29:58 +// */ +// +// @Configuration +// @EnableOpenApi +// public class SwaggerOpenApiConfig { +// +// @Bean +// public Docket api() { +// return new Docket(DocumentationType.OAS_30) +// .apiInfo(apiInfo()) +// .select() +// // 扫描特定包 +// // 扫描所有有注解的api,用这种方式更灵活 +// // .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) +// //.apis(RequestHandlerSelectors.any()) +// .apis(RequestHandlerSelectors.basePackage("com.jnssd")) +// .paths(PathSelectors.any()) +// .build() +// .securitySchemes(initSecuritySchemeList()) +// .securityContexts(Collections.singletonList(securityContext())); +// } +// +// public ApiInfo apiInfo() { +// return new ApiInfoBuilder() +// .title("Swagger项目测试") +// .description("novel项目接口文档") +// .build(); +// } +// +// private List initSecuritySchemeList() { +// +// List list = new ArrayList<>(); +// list.add(httpAuthenticationScheme()); +// list.add(securitySchemeApiKey()); +// list.add(securitySchemeOpenIdConnect()); +// +// // 配置oauth2的几种模式 +// list.add(securitySchemeOauth2ClientCredentials()); +// list.add(securitySchemeOauth2implicit()); +// list.add(securitySchemeOauth2Password()); +// list.add(securitySchemeOauth2AuthorizationCode()); +// return list; +// } +// +// private SecurityScheme httpAuthenticationScheme() { +// return HttpAuthenticationScheme.JWT_BEARER_BUILDER.name("JWT的值").build(); +// } +// +// // ApiKey模式 +// private SecurityScheme securitySchemeApiKey() { +// return new ApiKey("Authorization授权", "Authorization", "header"); +// } +// +// // OpenIdConnect +// +// // return new OpenIdConnectSchemeBuilder() +// // .name("OpenId授权") +// // .description("OpenIdConnect授权配置") +// // .openIdConnectUrl("https://your-openid-connect-url") +// // .build(); +// private SecurityScheme securitySchemeOpenIdConnect() { +// // Swagger配置 OpenIdConnect +// return new OpenIdConnectSchemeBuilder() +// .name("OpenIdConnect授权") +// .description("OpenIdConnect授权配置") +// .openIdConnectUrl("https://your-openid-connect-url") +// .build(); +// } +// +// // 客户端模式 +// private SecurityScheme securitySchemeOauth2ClientCredentials() { +// return OAuth2Scheme.OAUTH2_CLIENT_CREDENTIALS_FLOW_BUILDER +// .name("客户端模式") +// .tokenUrl("/oauth/authorize") +// .scopes(scopes()) +// .build(); +// } +// +// // 隐式模式 +// private SecurityScheme securitySchemeOauth2implicit() { +// return OAuth2Scheme.OAUTH2_IMPLICIT_FLOW_BUILDER +// .name("简化模式") +// .authorizationUrl("/oauth/authorize") +// .scopes(scopes()) +// .build(); +// } +// +// // 密码模式 +// private SecurityScheme securitySchemeOauth2Password() { +// return OAuth2Scheme.OAUTH2_PASSWORD_FLOW_BUILDER +// .name("密码模式") +// .tokenUrl("/oauth/token") +// .scopes(scopes()) +// .build(); +// } +// +// // 授权码模式 +// private SecurityScheme securitySchemeOauth2AuthorizationCode() { +// return OAuth2Scheme.OAUTH2_AUTHORIZATION_CODE_FLOW_BUILDER +// .name("授权码模式") +// .authorizationUrl("/oauth/authorize") +// .tokenUrl("/oauth/token") +// .scopes(scopes()) +// .build(); +// } +// +// private List scopes() { +// List list = new ArrayList<>(); +// list.add(new AuthorizationScope("read_scope", "Grants read access")); +// list.add(new AuthorizationScope("write_scope", "Grants write access")); +// list.add(new AuthorizationScope("admin_scope", "Grants read write and delete access")); +// return list; +// } +// +// private SecurityContext securityContext() { +// return SecurityContext.builder() +// .securityReferences(defaultAuth()) +// .operationSelector(operationContext -> { +// System.out.println("operationContext" + operationContext); +// // 除了get方法其他方法都要校验 +// // return !operationContext.httpMethod().name().equals("GET"); +// +// // 通过地址模糊匹配 +// AntPathMatcher pathMatcher = new AntPathMatcher(); +// String path = operationContext.requestMappingPattern(); +// return pathMatcher.match("/menu/**", path) || pathMatcher.match("/user/**", path); +// }) +// .build(); +// } +// +// private List defaultAuth() { +// AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); +// AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; +// authorizationScopes[0] = authorizationScope; +// return Collections.singletonList(new SecurityReference("密码模式", authorizationScopes)); +// } +// } diff --git a/spring-boot-swagger/src/main/java/com/jnssd/controller/RoleController.java b/spring-boot-swagger/src/main/java/com/jnssd/controller/RoleController.java index d764f57..bdb3519 100644 --- a/spring-boot-swagger/src/main/java/com/jnssd/controller/RoleController.java +++ b/spring-boot-swagger/src/main/java/com/jnssd/controller/RoleController.java @@ -1,12 +1,12 @@ package com.jnssd.controller; -import com.jnssd.model.Menu; import com.jnssd.model.Role; -import lombok.Data; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -17,7 +17,8 @@ import java.util.Objects; * @author zxj * @since 2023-10-12 16:32:38 */ -@Data +@RestController +@RequestMapping("/Role") public class RoleController { final static String SUCCESS_TEXT = "操作成功!"; @@ -25,6 +26,7 @@ public class RoleController { List list = new java.util.ArrayList<>(); + @GetMapping("/") public ResponseEntity> getAll() { return ResponseEntity.ok(list); } @@ -33,10 +35,11 @@ public class RoleController { @PostMapping("add") public ResponseEntity add(Role entity) { try { - entity.setId(Objects.requireNonNull(list.stream().max(Comparator.comparingInt(Role::getId)).get()).getId() + 1); + entity.setId(list.size() + 1); list.add(entity); return ResponseEntity.ok(SUCCESS_TEXT); } catch (Exception e) { + e.printStackTrace(); return ResponseEntity.status(400).body(FAIL_TEXT); } } @@ -46,7 +49,7 @@ public class RoleController { public ResponseEntity update(Role entity) { try { // 修改list下面的数据 - list.replaceAll((Role) -> Objects.equals(Role.getId(), entity.getId()) ? entity : Role); + list.replaceAll((role) -> Objects.equals(role.getId(), entity.getId()) ? entity : role); return ResponseEntity.ok(SUCCESS_TEXT); } catch (Exception e) { @@ -69,9 +72,9 @@ public class RoleController { @PostMapping("query") public ResponseEntity query(Integer id) { try { - Role Role = (Role) list.stream().filter(e -> Objects.equals(e.getId(), id)); + Role role = (Role) list.stream().filter(e -> Objects.equals(e.getId(), id)); // list 下查询 - return ResponseEntity.ok(Role); + return ResponseEntity.ok(role); } catch (Exception e) { return ResponseEntity.status(400).body(FAIL_TEXT); } diff --git a/spring-boot-swagger/src/main/java/com/jnssd/controller/UserController.java b/spring-boot-swagger/src/main/java/com/jnssd/controller/UserController.java index 6db0ff8..a5e9dda 100644 --- a/spring-boot-swagger/src/main/java/com/jnssd/controller/UserController.java +++ b/spring-boot-swagger/src/main/java/com/jnssd/controller/UserController.java @@ -1,11 +1,12 @@ package com.jnssd.controller; import com.jnssd.model.User; -import lombok.Data; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; -import java.util.Comparator; import java.util.List; import java.util.Objects; @@ -16,7 +17,8 @@ import java.util.Objects; * @author zxj * @since 2023-10-12 16:30:04 */ -@Data +@RestController +@RequestMapping("/user") public class UserController { final static String SUCCESS_TEXT = "操作成功!"; @@ -24,6 +26,7 @@ public class UserController { List list = new java.util.ArrayList<>(); + @GetMapping("/") public ResponseEntity> getAll() { return ResponseEntity.ok(list); } @@ -32,10 +35,11 @@ public class UserController { @PostMapping("add") public ResponseEntity add(User entity) { try { - entity.setId(Objects.requireNonNull(list.stream().max(Comparator.comparingInt(User::getId)).get()).getId() + 1); + entity.setId(list.size() + 1); list.add(entity); return ResponseEntity.ok(SUCCESS_TEXT); } catch (Exception e) { + e.printStackTrace(); return ResponseEntity.status(400).body(FAIL_TEXT); } } @@ -45,7 +49,7 @@ public class UserController { public ResponseEntity update(User entity) { try { // 修改list下面的数据 - list.replaceAll((User) -> Objects.equals(User.getId(), entity.getId()) ? entity : User); + list.replaceAll((user) -> Objects.equals(user.getId(), entity.getId()) ? entity : user); return ResponseEntity.ok(SUCCESS_TEXT); } catch (Exception e) { @@ -68,9 +72,9 @@ public class UserController { @PostMapping("query") public ResponseEntity query(Integer id) { try { - User User = (User) list.stream().filter(e -> Objects.equals(e.getId(), id)); + User user = (User) list.stream().filter(e -> Objects.equals(e.getId(), id)); // list 下查询 - return ResponseEntity.ok(User); + return ResponseEntity.ok(user); } catch (Exception e) { return ResponseEntity.status(400).body(FAIL_TEXT); } diff --git a/spring-boot-swagger/src/main/resources/application.yml b/spring-boot-swagger/src/main/resources/application.yml index fe52966..0186388 100644 --- a/spring-boot-swagger/src/main/resources/application.yml +++ b/spring-boot-swagger/src/main/resources/application.yml @@ -1,5 +1,5 @@ server: - port: 18080 + port: 8080 # ======================================================================== # 启动报错需要修改以下mvc配置 Failed to start bean 'documentationPluginsBootstrapper'