diff --git a/blog-frontend/index.html b/blog-frontend/index.html
index 06f6964..1743805 100644
--- a/blog-frontend/index.html
+++ b/blog-frontend/index.html
@@ -1,5 +1,6 @@
-
+
+
@@ -7,8 +8,10 @@
Vite App
+
-
-
+
+
-
+
+
\ No newline at end of file
diff --git a/blog-frontend/package-lock.json b/blog-frontend/package-lock.json
index 8fc75e9..01c5448 100644
--- a/blog-frontend/package-lock.json
+++ b/blog-frontend/package-lock.json
@@ -8,6 +8,7 @@
"name": "vue-project",
"version": "0.0.0",
"dependencies": {
+ "axios": "^1.3.4",
"element-plus": "^2.2.32",
"vue": "^3.2.45",
"vue-router": "^4.1.6"
@@ -1330,6 +1331,11 @@
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
"node_modules/available-typed-arrays": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -1342,6 +1348,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/axios": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz",
+ "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
+ "dependencies": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -1523,6 +1539,17 @@
"integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
"dev": true
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1624,6 +1651,14 @@
"integrity": "sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==",
"dev": true
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/destr": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/destr/-/destr-1.2.2.tgz",
@@ -1915,6 +1950,25 @@
"flat": "cli.js"
}
},
+ "node_modules/follow-redirects": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@@ -1924,6 +1978,19 @@
"is-callable": "^1.1.3"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/fs-minipass": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@@ -2733,6 +2800,25 @@
"node": ">=8.6"
}
},
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -3073,6 +3159,11 @@
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
"node_modules/prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
@@ -4922,12 +5013,27 @@
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz",
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
},
+ "asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
+ },
"available-typed-arrays": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
"dev": true
},
+ "axios": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.4.tgz",
+ "integrity": "sha512-toYm+Bsyl6VC5wSkfkbbNB6ROv7KY93PEBBL6xyDczaIHasAiv4wPqQ/c4RjoQzipxRD2W5g21cOqQulZ7rHwQ==",
+ "requires": {
+ "follow-redirects": "^1.15.0",
+ "form-data": "^4.0.0",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
"balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
@@ -5057,6 +5163,14 @@
"integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==",
"dev": true
},
+ "combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "requires": {
+ "delayed-stream": "~1.0.0"
+ }
+ },
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -5141,6 +5255,11 @@
"integrity": "sha512-+uO4+qr7msjNNWKYPHqN/3+Dx3NFkmIzayk2L1MyZQlvgZb/J1A0fo410dpKrN2SnqFjt8n4JL8fDJE0wIgjFQ==",
"dev": true
},
+ "delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="
+ },
"destr": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/destr/-/destr-1.2.2.tgz",
@@ -5379,6 +5498,11 @@
"integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
"dev": true
},
+ "follow-redirects": {
+ "version": "1.15.2",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+ "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
+ },
"for-each": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
@@ -5388,6 +5512,16 @@
"is-callable": "^1.1.3"
}
},
+ "form-data": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+ "requires": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "mime-types": "^2.1.12"
+ }
+ },
"fs-minipass": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz",
@@ -5980,6 +6114,19 @@
"picomatch": "^2.3.1"
}
},
+ "mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="
+ },
+ "mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "requires": {
+ "mime-db": "1.52.0"
+ }
+ },
"minimatch": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -6235,6 +6382,11 @@
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
"dev": true
},
+ "proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
+ },
"prr": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
diff --git a/blog-frontend/package.json b/blog-frontend/package.json
index 788e6c0..55ece2d 100644
--- a/blog-frontend/package.json
+++ b/blog-frontend/package.json
@@ -3,13 +3,14 @@
"version": "0.0.0",
"private": true,
"scripts": {
- "dev": "vite",
+ "dev": "vite --port 3000",
"build": "run-p type-check build-only",
"preview": "vite preview",
"build-only": "vite build",
"type-check": "vue-tsc --noEmit"
},
"dependencies": {
+ "axios": "^1.3.4",
"element-plus": "^2.2.32",
"vue": "^3.2.45",
"vue-router": "^4.1.6"
diff --git a/blog-frontend/src/App.vue b/blog-frontend/src/App.vue
index 7905b05..cf9b028 100644
--- a/blog-frontend/src/App.vue
+++ b/blog-frontend/src/App.vue
@@ -1,85 +1,70 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ 网站标题
+
+
+
+
+
+ 头像
+
+
+
+
+
+
+
+
diff --git a/blog-frontend/src/api-base/api.ts b/blog-frontend/src/api-base/api.ts
new file mode 100644
index 0000000..8683a75
--- /dev/null
+++ b/blog-frontend/src/api-base/api.ts
@@ -0,0 +1,15 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */export * from './apis/blog-controller-api';
+export * from './apis/user-controller-api';
+
diff --git a/blog-frontend/src/api-base/apis/blog-controller-api.ts b/blog-frontend/src/api-base/apis/blog-controller-api.ts
new file mode 100644
index 0000000..62048f9
--- /dev/null
+++ b/blog-frontend/src/api-base/apis/blog-controller-api.ts
@@ -0,0 +1,116 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
+import { Configuration } from '../configuration';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
+import { ResponseVOListBlogEntity } from '../models';
+/**
+ * BlogControllerApi - axios parameter creator
+ * @export
+ */
+export const BlogControllerApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getBlogList: async (options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/blog/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * BlogControllerApi - functional programming interface
+ * @export
+ */
+export const BlogControllerApiFp = function(configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getBlogList(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await BlogControllerApiAxiosParamCreator(configuration).getBlogList(options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ }
+};
+
+/**
+ * BlogControllerApi - factory interface
+ * @export
+ */
+export const BlogControllerApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ return {
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getBlogList(options?: AxiosRequestConfig): Promise> {
+ return BlogControllerApiFp(configuration).getBlogList(options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * BlogControllerApi - object-oriented interface
+ * @export
+ * @class BlogControllerApi
+ * @extends {BaseAPI}
+ */
+export class BlogControllerApi extends BaseAPI {
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof BlogControllerApi
+ */
+ public async getBlogList(options?: AxiosRequestConfig) : Promise> {
+ return BlogControllerApiFp(this.configuration).getBlogList(options).then((request) => request(this.axios, this.basePath));
+ }
+}
diff --git a/blog-frontend/src/api-base/apis/user-controller-api.ts b/blog-frontend/src/api-base/apis/user-controller-api.ts
new file mode 100644
index 0000000..5099ac3
--- /dev/null
+++ b/blog-frontend/src/api-base/apis/user-controller-api.ts
@@ -0,0 +1,325 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios';
+import { Configuration } from '../configuration';
+// Some imports not used depending on template conditions
+// @ts-ignore
+import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base';
+import { ResponseVOUserRegisterResponseVO } from '../models';
+import { ResponseVOVoid } from '../models';
+import { UserRegisterRequireVO } from '../models';
+/**
+ * UserControllerApi - axios parameter creator
+ * @export
+ */
+export const UserControllerApiAxiosParamCreator = function (configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getAllUserInfo: async (options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/user/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @param {string} userID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ getUserInfo: async (userID: string, options: AxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'userID' is not null or undefined
+ if (userID === null || userID === undefined) {
+ throw new RequiredError('userID','Required parameter userID was null or undefined when calling getUserInfo.');
+ }
+ const localVarPath = `/api/v1/user/{userID}/`
+ .replace(`{${"userID"}}`, encodeURIComponent(String(userID)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ modifyUserInfo: async (options: AxiosRequestConfig = {}): Promise => {
+ const localVarPath = `/api/v1/user/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'PUT', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ *
+ * @param {UserRegisterRequireVO} body
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ registerUser: async (body: UserRegisterRequireVO, options: AxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'body' is not null or undefined
+ if (body === null || body === undefined) {
+ throw new RequiredError('body','Required parameter body was null or undefined when calling registerUser.');
+ }
+ const localVarPath = `/api/v1/user/`;
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, 'https://example.com');
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+ const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+
+ const query = new URLSearchParams(localVarUrlObj.search);
+ for (const key in localVarQueryParameter) {
+ query.set(key, localVarQueryParameter[key]);
+ }
+ for (const key in options.params) {
+ query.set(key, options.params[key]);
+ }
+ localVarUrlObj.search = (new URLSearchParams(query)).toString();
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json';
+ localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || "");
+
+ return {
+ url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash,
+ options: localVarRequestOptions,
+ };
+ },
+ }
+};
+
+/**
+ * UserControllerApi - functional programming interface
+ * @export
+ */
+export const UserControllerApiFp = function(configuration?: Configuration) {
+ return {
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getAllUserInfo(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await UserControllerApiAxiosParamCreator(configuration).getAllUserInfo(options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @param {string} userID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getUserInfo(userID: string, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await UserControllerApiAxiosParamCreator(configuration).getUserInfo(userID, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async modifyUserInfo(options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await UserControllerApiAxiosParamCreator(configuration).modifyUserInfo(options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ /**
+ *
+ * @param {UserRegisterRequireVO} body
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async registerUser(body: UserRegisterRequireVO, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> {
+ const localVarAxiosArgs = await UserControllerApiAxiosParamCreator(configuration).registerUser(body, options);
+ return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => {
+ const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url};
+ return axios.request(axiosRequestArgs);
+ };
+ },
+ }
+};
+
+/**
+ * UserControllerApi - factory interface
+ * @export
+ */
+export const UserControllerApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) {
+ return {
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getAllUserInfo(options?: AxiosRequestConfig): Promise> {
+ return UserControllerApiFp(configuration).getAllUserInfo(options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @param {string} userID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async getUserInfo(userID: string, options?: AxiosRequestConfig): Promise> {
+ return UserControllerApiFp(configuration).getUserInfo(userID, options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async modifyUserInfo(options?: AxiosRequestConfig): Promise> {
+ return UserControllerApiFp(configuration).modifyUserInfo(options).then((request) => request(axios, basePath));
+ },
+ /**
+ *
+ * @param {UserRegisterRequireVO} body
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async registerUser(body: UserRegisterRequireVO, options?: AxiosRequestConfig): Promise> {
+ return UserControllerApiFp(configuration).registerUser(body, options).then((request) => request(axios, basePath));
+ },
+ };
+};
+
+/**
+ * UserControllerApi - object-oriented interface
+ * @export
+ * @class UserControllerApi
+ * @extends {BaseAPI}
+ */
+export class UserControllerApi extends BaseAPI {
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof UserControllerApi
+ */
+ public async getAllUserInfo(options?: AxiosRequestConfig) : Promise> {
+ return UserControllerApiFp(this.configuration).getAllUserInfo(options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @param {string} userID
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof UserControllerApi
+ */
+ public async getUserInfo(userID: string, options?: AxiosRequestConfig) : Promise> {
+ return UserControllerApiFp(this.configuration).getUserInfo(userID, options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof UserControllerApi
+ */
+ public async modifyUserInfo(options?: AxiosRequestConfig) : Promise> {
+ return UserControllerApiFp(this.configuration).modifyUserInfo(options).then((request) => request(this.axios, this.basePath));
+ }
+ /**
+ *
+ * @param {UserRegisterRequireVO} body
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof UserControllerApi
+ */
+ public async registerUser(body: UserRegisterRequireVO, options?: AxiosRequestConfig) : Promise> {
+ return UserControllerApiFp(this.configuration).registerUser(body, options).then((request) => request(this.axios, this.basePath));
+ }
+}
diff --git a/blog-frontend/src/api-base/base.ts b/blog-frontend/src/api-base/base.ts
new file mode 100644
index 0000000..59e9604
--- /dev/null
+++ b/blog-frontend/src/api-base/base.ts
@@ -0,0 +1,69 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { Configuration } from "./configuration";
+// Some imports not used depending on template conditions
+// @ts-ignore
+import globalAxios, { AxiosRequestConfig, AxiosInstance } from 'axios';
+
+export const BASE_PATH = "http://localhost:8080".replace(/\/+$/, "");
+
+/**
+ *
+ * @export
+ */
+export const COLLECTION_FORMATS = {
+ csv: ",",
+ ssv: " ",
+ tsv: "\t",
+ pipes: "|",
+};
+
+/**
+ *
+ * @export
+ * @interface RequestArgs
+ */
+export interface RequestArgs {
+ url: string;
+ options: AxiosRequestConfig;
+}
+
+/**
+ *
+ * @export
+ * @class BaseAPI
+ */
+export class BaseAPI {
+ protected configuration: Configuration | undefined;
+
+ constructor(configuration?: Configuration, protected basePath: string = BASE_PATH, protected axios: AxiosInstance = globalAxios) {
+ if (configuration) {
+ this.configuration = configuration;
+ this.basePath = configuration.basePath || this.basePath;
+ }
+ }
+};
+
+/**
+ *
+ * @export
+ * @class RequiredError
+ * @extends {Error}
+ */
+export class RequiredError extends Error {
+ name: "RequiredError" = "RequiredError";
+ constructor(public field: string, msg?: string) {
+ super(msg);
+ }
+}
diff --git a/blog-frontend/src/api-base/configuration.ts b/blog-frontend/src/api-base/configuration.ts
new file mode 100644
index 0000000..b477c58
--- /dev/null
+++ b/blog-frontend/src/api-base/configuration.ts
@@ -0,0 +1,74 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+export interface ConfigurationParameters {
+ apiKey?: string | Promise | ((name: string) => string) | ((name: string) => Promise);
+ username?: string;
+ password?: string;
+ accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise);
+ basePath?: string;
+ baseOptions?: any;
+}
+
+export class Configuration {
+ /**
+ * parameter for apiKey security
+ * @param name security name
+ * @memberof Configuration
+ */
+ apiKey?: string | Promise | ((name: string) => string) | ((name: string) => Promise);
+ /**
+ * parameter for basic security
+ *
+ * @type {string}
+ * @memberof Configuration
+ */
+ username?: string;
+ /**
+ * parameter for basic security
+ *
+ * @type {string}
+ * @memberof Configuration
+ */
+ password?: string;
+ /**
+ * parameter for oauth2 security
+ * @param name security name
+ * @param scopes oauth2 scope
+ * @memberof Configuration
+ */
+ accessToken?: string | Promise | ((name?: string, scopes?: string[]) => string) | ((name?: string, scopes?: string[]) => Promise);
+ /**
+ * override base path
+ *
+ * @type {string}
+ * @memberof Configuration
+ */
+ basePath?: string;
+ /**
+ * base options for axios calls
+ *
+ * @type {any}
+ * @memberof Configuration
+ */
+ baseOptions?: any;
+
+ constructor(param: ConfigurationParameters = {}) {
+ this.apiKey = param.apiKey;
+ this.username = param.username;
+ this.password = param.password;
+ this.accessToken = param.accessToken;
+ this.basePath = param.basePath;
+ this.baseOptions = param.baseOptions;
+ }
+}
diff --git a/blog-frontend/src/api-base/index.ts b/blog-frontend/src/api-base/index.ts
new file mode 100644
index 0000000..c779bd1
--- /dev/null
+++ b/blog-frontend/src/api-base/index.ts
@@ -0,0 +1,17 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+export * from "./api";
+export * from "./configuration";
+export * from "./models";
+
diff --git a/blog-frontend/src/api-base/models/attach-entity.ts b/blog-frontend/src/api-base/models/attach-entity.ts
new file mode 100644
index 0000000..da714bd
--- /dev/null
+++ b/blog-frontend/src/api-base/models/attach-entity.ts
@@ -0,0 +1,51 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { UserEntity } from './user-entity';
+/**
+ *
+ * @export
+ * @interface AttachEntity
+ */
+export interface AttachEntity {
+ /**
+ *
+ * @type {number}
+ * @memberof AttachEntity
+ */
+ id?: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof AttachEntity
+ */
+ data?: Array;
+ /**
+ *
+ * @type {UserEntity}
+ * @memberof AttachEntity
+ */
+ uploader?: UserEntity;
+ /**
+ *
+ * @type {Date}
+ * @memberof AttachEntity
+ */
+ createTime?: Date;
+ /**
+ *
+ * @type {Date}
+ * @memberof AttachEntity
+ */
+ updateTime?: Date;
+}
diff --git a/blog-frontend/src/api-base/models/blog-attach-entity.ts b/blog-frontend/src/api-base/models/blog-attach-entity.ts
new file mode 100644
index 0000000..f0b3934
--- /dev/null
+++ b/blog-frontend/src/api-base/models/blog-attach-entity.ts
@@ -0,0 +1,51 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { BlogEntity } from './blog-entity';
+/**
+ *
+ * @export
+ * @interface BlogAttachEntity
+ */
+export interface BlogAttachEntity {
+ /**
+ *
+ * @type {number}
+ * @memberof BlogAttachEntity
+ */
+ id?: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof BlogAttachEntity
+ */
+ data?: Array;
+ /**
+ *
+ * @type {BlogEntity}
+ * @memberof BlogAttachEntity
+ */
+ blogEntity?: BlogEntity;
+ /**
+ *
+ * @type {Date}
+ * @memberof BlogAttachEntity
+ */
+ createTime?: Date;
+ /**
+ *
+ * @type {Date}
+ * @memberof BlogAttachEntity
+ */
+ updateTime?: Date;
+}
diff --git a/blog-frontend/src/api-base/models/blog-entity.ts b/blog-frontend/src/api-base/models/blog-entity.ts
new file mode 100644
index 0000000..30ff902
--- /dev/null
+++ b/blog-frontend/src/api-base/models/blog-entity.ts
@@ -0,0 +1,64 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { BlogAttachEntity } from './blog-attach-entity';
+import { UserEntity } from './user-entity';
+/**
+ *
+ * @export
+ * @interface BlogEntity
+ */
+export interface BlogEntity {
+ /**
+ *
+ * @type {number}
+ * @memberof BlogEntity
+ */
+ id?: number;
+ /**
+ *
+ * @type {string}
+ * @memberof BlogEntity
+ */
+ password?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof BlogEntity
+ */
+ content?: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof BlogEntity
+ */
+ attachEntities?: Array;
+ /**
+ *
+ * @type {UserEntity}
+ * @memberof BlogEntity
+ */
+ uploader?: UserEntity;
+ /**
+ *
+ * @type {Date}
+ * @memberof BlogEntity
+ */
+ createTime?: Date;
+ /**
+ *
+ * @type {Date}
+ * @memberof BlogEntity
+ */
+ updateTime?: Date;
+}
diff --git a/blog-frontend/src/api-base/models/index.ts b/blog-frontend/src/api-base/models/index.ts
new file mode 100644
index 0000000..2959554
--- /dev/null
+++ b/blog-frontend/src/api-base/models/index.ts
@@ -0,0 +1,9 @@
+export * from './attach-entity';
+export * from './blog-attach-entity';
+export * from './blog-entity';
+export * from './response-volist-blog-entity';
+export * from './response-vouser-register-response-vo';
+export * from './response-vovoid';
+export * from './user-entity';
+export * from './user-register-require-vo';
+export * from './user-register-response-vo';
diff --git a/blog-frontend/src/api-base/models/response-volist-blog-entity.ts b/blog-frontend/src/api-base/models/response-volist-blog-entity.ts
new file mode 100644
index 0000000..5ee27e1
--- /dev/null
+++ b/blog-frontend/src/api-base/models/response-volist-blog-entity.ts
@@ -0,0 +1,39 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { BlogEntity } from './blog-entity';
+/**
+ *
+ * @export
+ * @interface ResponseVOListBlogEntity
+ */
+export interface ResponseVOListBlogEntity {
+ /**
+ *
+ * @type {number}
+ * @memberof ResponseVOListBlogEntity
+ */
+ code?: number;
+ /**
+ *
+ * @type {string}
+ * @memberof ResponseVOListBlogEntity
+ */
+ msg?: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof ResponseVOListBlogEntity
+ */
+ data?: Array;
+}
diff --git a/blog-frontend/src/api-base/models/response-vouser-register-response-vo.ts b/blog-frontend/src/api-base/models/response-vouser-register-response-vo.ts
new file mode 100644
index 0000000..17e8ce5
--- /dev/null
+++ b/blog-frontend/src/api-base/models/response-vouser-register-response-vo.ts
@@ -0,0 +1,39 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { UserRegisterResponseVO } from './user-register-response-vo';
+/**
+ *
+ * @export
+ * @interface ResponseVOUserRegisterResponseVO
+ */
+export interface ResponseVOUserRegisterResponseVO {
+ /**
+ *
+ * @type {number}
+ * @memberof ResponseVOUserRegisterResponseVO
+ */
+ code?: number;
+ /**
+ *
+ * @type {string}
+ * @memberof ResponseVOUserRegisterResponseVO
+ */
+ msg?: string;
+ /**
+ *
+ * @type {UserRegisterResponseVO}
+ * @memberof ResponseVOUserRegisterResponseVO
+ */
+ data?: UserRegisterResponseVO;
+}
diff --git a/blog-frontend/src/api-base/models/response-vovoid.ts b/blog-frontend/src/api-base/models/response-vovoid.ts
new file mode 100644
index 0000000..50a4737
--- /dev/null
+++ b/blog-frontend/src/api-base/models/response-vovoid.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ *
+ * @export
+ * @interface ResponseVOVoid
+ */
+export interface ResponseVOVoid {
+ /**
+ *
+ * @type {number}
+ * @memberof ResponseVOVoid
+ */
+ code?: number;
+ /**
+ *
+ * @type {string}
+ * @memberof ResponseVOVoid
+ */
+ msg?: string;
+ /**
+ *
+ * @type {any}
+ * @memberof ResponseVOVoid
+ */
+ data?: any;
+}
diff --git a/blog-frontend/src/api-base/models/user-entity.ts b/blog-frontend/src/api-base/models/user-entity.ts
new file mode 100644
index 0000000..dd82eba
--- /dev/null
+++ b/blog-frontend/src/api-base/models/user-entity.ts
@@ -0,0 +1,93 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+import { AttachEntity } from './attach-entity';
+import { BlogEntity } from './blog-entity';
+/**
+ *
+ * @export
+ * @interface UserEntity
+ */
+export interface UserEntity {
+ /**
+ *
+ * @type {string}
+ * @memberof UserEntity
+ */
+ id?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UserEntity
+ */
+ email?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UserEntity
+ */
+ nickname?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UserEntity
+ */
+ password?: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof UserEntity
+ */
+ permissions?: Array;
+ /**
+ *
+ * @type {string}
+ * @memberof UserEntity
+ */
+ role?: UserEntityRoleEnum;
+ /**
+ *
+ * @type {Array}
+ * @memberof UserEntity
+ */
+ attachEntities?: Array;
+ /**
+ *
+ * @type {Array}
+ * @memberof UserEntity
+ */
+ blogEntities?: Array;
+ /**
+ *
+ * @type {Date}
+ * @memberof UserEntity
+ */
+ createTime?: Date;
+ /**
+ *
+ * @type {Date}
+ * @memberof UserEntity
+ */
+ updateTime?: Date;
+}
+
+/**
+ * @export
+ * @enum {string}
+ */
+export enum UserEntityRoleEnum {
+ GUEST = 'GUEST',
+ AUTHOR = 'AUTHOR',
+ ADMINISTRATOR = 'ADMINISTRATOR'
+}
+
diff --git a/blog-frontend/src/api-base/models/user-register-require-vo.ts b/blog-frontend/src/api-base/models/user-register-require-vo.ts
new file mode 100644
index 0000000..fb45376
--- /dev/null
+++ b/blog-frontend/src/api-base/models/user-register-require-vo.ts
@@ -0,0 +1,38 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ *
+ * @export
+ * @interface UserRegisterRequireVO
+ */
+export interface UserRegisterRequireVO {
+ /**
+ *
+ * @type {string}
+ * @memberof UserRegisterRequireVO
+ */
+ email?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UserRegisterRequireVO
+ */
+ nickname?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UserRegisterRequireVO
+ */
+ password?: string;
+}
diff --git a/blog-frontend/src/api-base/models/user-register-response-vo.ts b/blog-frontend/src/api-base/models/user-register-response-vo.ts
new file mode 100644
index 0000000..35e6fec
--- /dev/null
+++ b/blog-frontend/src/api-base/models/user-register-response-vo.ts
@@ -0,0 +1,56 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * OpenAPI definition
+ * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+ *
+ * OpenAPI spec version: v0
+ *
+ *
+ * NOTE: This class is auto generated by the swagger code generator program.
+ * https://github.com/swagger-api/swagger-codegen.git
+ * Do not edit the class manually.
+ */
+/**
+ *
+ * @export
+ * @interface UserRegisterResponseVO
+ */
+export interface UserRegisterResponseVO {
+ /**
+ *
+ * @type {string}
+ * @memberof UserRegisterResponseVO
+ */
+ id?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UserRegisterResponseVO
+ */
+ email?: string;
+ /**
+ *
+ * @type {string}
+ * @memberof UserRegisterResponseVO
+ */
+ nickname?: string;
+ /**
+ *
+ * @type {Array}
+ * @memberof UserRegisterResponseVO
+ */
+ permissions?: Array;
+ /**
+ *
+ * @type {Date}
+ * @memberof UserRegisterResponseVO
+ */
+ createTime?: Date;
+ /**
+ *
+ * @type {Date}
+ * @memberof UserRegisterResponseVO
+ */
+ updateTime?: Date;
+}
diff --git a/blog-frontend/src/api-base/tsconfig.json b/blog-frontend/src/api-base/tsconfig.json
new file mode 100644
index 0000000..2f27acb
--- /dev/null
+++ b/blog-frontend/src/api-base/tsconfig.json
@@ -0,0 +1,21 @@
+{
+ "compilerOptions": {
+ "declaration": true,
+ "target": "es5",
+ "module": "commonjs",
+ "noImplicitAny": true,
+ "outDir": "dist",
+ "rootDir": ".",
+ "lib": [
+ "es6",
+ "dom"
+ ],
+ "typeRoots": [
+ "node_modules/@types"
+ ]
+ },
+ "exclude": [
+ "dist",
+ "node_modules"
+ ]
+}
diff --git a/blog-frontend/src/assets/base.css b/blog-frontend/src/assets/base.css
index 71dc55a..cc0d8b6 100644
--- a/blog-frontend/src/assets/base.css
+++ b/blog-frontend/src/assets/base.css
@@ -71,4 +71,4 @@ body {
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-}
+}
\ No newline at end of file
diff --git a/blog-frontend/src/assets/main.css b/blog-frontend/src/assets/main.css
index e8667cd..39741be 100644
--- a/blog-frontend/src/assets/main.css
+++ b/blog-frontend/src/assets/main.css
@@ -1,35 +1,14 @@
@import './base.css';
+html,
+body {
+ height: 100%;
+ width: 100%;
+}
+
#app {
- max-width: 1280px;
+ height: 100%;
+ width: 100%;
margin: 0 auto;
padding: 2rem;
-
- font-weight: normal;
-}
-
-a,
-.green {
- text-decoration: none;
- color: hsla(160, 100%, 37%, 1);
- transition: 0.4s;
-}
-
-@media (hover: hover) {
- a:hover {
- background-color: hsla(160, 100%, 37%, 0.2);
- }
-}
-
-@media (min-width: 1024px) {
- body {
- display: flex;
- place-items: center;
- }
-
- #app {
- display: grid;
- grid-template-columns: 1fr 1fr;
- padding: 0 2rem;
- }
-}
+}
\ No newline at end of file
diff --git a/blog-frontend/src/views/IndexView.vue b/blog-frontend/src/views/IndexView.vue
new file mode 100644
index 0000000..a8ec0b7
--- /dev/null
+++ b/blog-frontend/src/views/IndexView.vue
@@ -0,0 +1,6 @@
+
+
+
+
+
diff --git a/blog-frontend/src/views/VueIndexVuew.vue b/blog-frontend/src/views/VueIndexVuew.vue
new file mode 100644
index 0000000..dfbcf57
--- /dev/null
+++ b/blog-frontend/src/views/VueIndexVuew.vue
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+