From 73aec7279eb869df12136f7fb2182658ae71ae56 Mon Sep 17 00:00:00 2001
From: zxj <1845124851@qq.com>
Date: Mon, 16 Oct 2023 15:27:57 +0800
Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E7=BD=AESwagger=E4=B8=8BSwagger2?=
=?UTF-8?q?=E7=9A=84=E7=9B=B8=E5=85=B3=E6=8E=88=E6=9D=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/com/jnssd/config/SwaggerConfig.java | 259 +++++++--------
.../jnssd/config/SwaggerOpenApiConfig.java | 307 +++++++++---------
.../com/jnssd/controller/RoleController.java | 19 +-
.../com/jnssd/controller/UserController.java | 18 +-
.../src/main/resources/application.yml | 2 +-
5 files changed, 316 insertions(+), 289 deletions(-)
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