Commit 99874516 authored by vben's avatar vben
Browse files

feat: use simpler nitro instead of nestjs to implement mock service

parent 9ec91ac1
......@@ -5,6 +5,8 @@ dist-ssr
dist.zip
dist.tar
dist.war
.nitro
.output
*-dist.zip
*-dist.tar
*-dist.war
......
......@@ -6,6 +6,8 @@ node_modules
.nvmrc
coverage
CODEOWNERS
.nitro
.output
**/*.svg
......
......@@ -191,5 +191,6 @@
"tailwind.config.mjs": "postcss.*"
},
"commentTranslate.hover.enabled": true,
"i18n-ally.keystyle": "nested"
"i18n-ally.keystyle": "nested",
"commentTranslate.multiLineMerge": true
}
PORT=5320
......@@ -10,9 +10,6 @@ Vben Admin 数据 mock 服务,没有对接任何的数据库,所有数据都
# development
$ pnpm run start
# watch mode
$ pnpm run start:dev
# production mode
$ pnpm run start:prod
$ pnpm run build
```
export default eventHandler((event) => {
const token = getHeader(event, 'Authorization');
if (!token) {
setResponseStatus(event, 401);
return useResponseError('UnauthorizedException', 'Unauthorized Exception');
}
const username = Buffer.from(token, 'base64').toString('utf8');
const codes =
MOCK_CODES.find((item) => item.username === username)?.codes ?? [];
return useResponseSuccess(codes);
});
export default defineEventHandler(async (event) => {
const { password, username } = await readBody(event);
const findUser = MOCK_USERS.find(
(item) => item.username === username && item.password === password,
);
if (!findUser) {
setResponseStatus(event, 403);
return useResponseError('UnauthorizedException', '用户名或密码错误');
}
const accessToken = Buffer.from(username).toString('base64');
return useResponseSuccess({
accessToken,
// TODO: refresh token
refreshToken: accessToken,
});
});
export default eventHandler((event) => {
const token = getHeader(event, 'Authorization');
if (!token) {
setResponseStatus(event, 401);
return useResponseError('UnauthorizedException', 'Unauthorized Exception');
}
const username = Buffer.from(token, 'base64').toString('utf8');
const menus =
MOCK_MENUS.find((item) => item.username === username)?.menus ?? [];
return useResponseSuccess(menus);
});
export default eventHandler((event) => {
const { status } = getQuery(event);
setResponseStatus(event, Number(status));
return useResponseError(`${status}`);
});
export default defineEventHandler(() => 'Test get handler');
export default defineEventHandler(() => 'Test post handler');
export default eventHandler((event) => {
const token = getHeader(event, 'Authorization');
if (!token) {
setResponseStatus(event, 401);
return useResponseError('UnauthorizedException', 'Unauthorized Exception');
}
const username = Buffer.from(token, 'base64').toString('utf8');
const user = MOCK_USERS.find((item) => item.username === username);
const { password: _pwd, ...userInfo } = user;
return useResponseSuccess(userInfo);
});
module.exports = {
apps: [
{
autorestart: true,
cwd: './',
env: {
NODE_ENV: 'production',
},
env_development: {
NODE_ENV: 'development',
},
env_production: {
NODE_ENV: 'production',
},
ignore_watch: ['node_modules', '.logs', 'dist'],
instances: 1,
max_memory_restart: '1G',
name: '@vben/backend-mock',
script: 'node dist/main.js',
watch: false,
},
],
};
import type { NitroErrorHandler } from 'nitropack';
const errorHandler: NitroErrorHandler = function (error, event) {
event.res.end(`[error handler] ${error.stack}`);
};
export default errorHandler;
@port = 5320
@type = application/json
@token = Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MCwicm9sZXMiOlsiYWRtaW4iXSwidXNlcm5hbWUiOiJ2YmVuIiwiaWF0IjoxNzE5ODkwMTEwLCJleHAiOjE3MTk5NzY1MTB9.eyAFsQ2Jk_mAQGvrEL1jF9O6YmLZ_PSYj5aokL6fCuU
POST http://localhost:{{port}}/api/auth/login HTTP/1.1
content-type: {{ type }}
{
"username": "vben",
"password": "123456"
}
###
GET http://localhost:{{port}}/api/auth/getUserInfo HTTP/1.1
content-type: {{ type }}
Authorization: {{ token }}
{
"username": "vben"
}
@port = 5320
GET http://localhost:{{port}}/api HTTP/1.1
content-type: application/json
@port = 5320
@type = application/json
@token = Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MCwicm9sZXMiOlsiYWRtaW4iXSwidXNlcm5hbWUiOiJ2YmVuIiwiaWF0IjoxNzE5ODkwMTEwLCJleHAiOjE3MTk5NzY1MTB9.eyAFsQ2Jk_mAQGvrEL1jF9O6YmLZ_PSYj5aokL6fCuU
GET http://localhost:{{port}}/api/menu/getAll HTTP/1.1
content-type: {{ type }}
Authorization: {{ token }}
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"sourceRoot": "src",
"compilerOptions": {
"assets": ["**/*.yml", "**/*.json"],
"watchAssets": true,
"deleteOutDir": true
}
}
import errorHandler from './error';
export default defineNitroConfig({
devErrorHandler: errorHandler,
errorHandler: '~/error',
});
......@@ -6,41 +6,10 @@
"license": "MIT",
"author": "",
"scripts": {
"build": "nest build",
"dev": "pnpm run start:dev",
"start": "cross-env NODE_ENV=development node dist/main",
"start:dev": "cross-env NODE_ENV=development DEBUG=true nest start --watch",
"start:prod": "nest build && cross-env NODE_ENV=production node dist/main"
"start": "nitro dev",
"build": "nitro build"
},
"dependencies": {
"@nestjs/common": "^10.3.10",
"@nestjs/config": "^3.2.3",
"@nestjs/core": "^10.3.10",
"@nestjs/jwt": "^10.2.0",
"@nestjs/passport": "^10.0.3",
"@nestjs/platform-express": "^10.3.10",
"@types/js-yaml": "^4.0.9",
"bcryptjs": "^2.4.3",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"cross-env": "^7.0.3",
"joi": "^17.13.3",
"js-yaml": "^4.1.0",
"mockjs": "^1.1.0",
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
"passport-local": "^1.0.0",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1"
},
"devDependencies": {
"@nestjs/cli": "^10.4.2",
"@nestjs/schematics": "^10.1.2",
"@types/express": "^4.17.21",
"@types/mockjs": "^1.0.10",
"@types/node": "^20.14.11",
"nodemon": "^3.1.4",
"ts-node": "^10.9.2",
"typescript": "^5.5.3"
"nitropack": "latest"
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment