Skip to content

Commit aef2520

Browse files
committed
feat: ts
1 parent e4bc177 commit aef2520

File tree

5 files changed

+50
-21
lines changed

5 files changed

+50
-21
lines changed
+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"1590472484271":[{"index":0,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":1,"title":"React 16.4 开发简书项目 从零基础入门到实战"},{"index":2,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":3,"title":"从基础到实战\t手把手带你掌握新版Webpack4.0"},{"index":4,"title":"Dell Lee 的微课堂,职业规划答疑解惑,精彩文章与你分享"}],"1590472490515":[{"index":0,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":1,"title":"React 16.4 开发简书项目 从零基础入门到实战"},{"index":2,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":3,"title":"从基础到实战\t手把手带你掌握新版Webpack4.0"},{"index":4,"title":"Dell Lee 的微课堂,职业规划答疑解惑,精彩文章与你分享"}],"1590473203446":[{"index":0,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":1,"title":"React 16.4 开发简书项目 从零基础入门到实战"},{"index":2,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":3,"title":"从基础到实战\t手把手带你掌握新版Webpack4.0"},{"index":4,"title":"Dell Lee 的微课堂,职业规划答疑解惑,精彩文章与你分享"}]}
1+
{"1590472484271":[{"index":0,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":1,"title":"React 16.4 开发简书项目 从零基础入门到实战"},{"index":2,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":3,"title":"从基础到实战\t手把手带你掌握新版Webpack4.0"},{"index":4,"title":"Dell Lee 的微课堂,职业规划答疑解惑,精彩文章与你分享"}],"1590472490515":[{"index":0,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":1,"title":"React 16.4 开发简书项目 从零基础入门到实战"},{"index":2,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":3,"title":"从基础到实战\t手把手带你掌握新版Webpack4.0"},{"index":4,"title":"Dell Lee 的微课堂,职业规划答疑解惑,精彩文章与你分享"}],"1590473203446":[{"index":0,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":1,"title":"React 16.4 开发简书项目 从零基础入门到实战"},{"index":2,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":3,"title":"从基础到实战\t手把手带你掌握新版Webpack4.0"},{"index":4,"title":"Dell Lee 的微课堂,职业规划答疑解惑,精彩文章与你分享"}],"1590544400232":[{"index":0,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":1,"title":"React 16.4 开发简书项目 从零基础入门到实战"},{"index":2,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":3,"title":"从基础到实战\t手把手带你掌握新版Webpack4.0"},{"index":4,"title":"Dell Lee 的微课堂,职业规划答疑解惑,精彩文章与你分享"}],"1590545229685":[{"index":0,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":1,"title":"React 16.4 开发简书项目 从零基础入门到实战"},{"index":2,"title":"Vue2.5开发去哪儿网App 从零基础入门到实战项目"},{"index":3,"title":"从基础到实战\t手把手带你掌握新版Webpack4.0"},{"index":4,"title":"Dell Lee 的微课堂,职业规划答疑解惑,精彩文章与你分享"}]}

crowller-code-express/src/router.ts

+29-20
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,28 @@
1-
import { Router, Request, Response } from 'express';
2-
import Crowller from './crowller';
3-
import DellAnalyzer from './dellAnalyzer';
1+
import { Router, Request, Response, NextFunction } from 'express';
2+
import Crowller from './utils/crowller';
3+
import DellAnalyzer from './utils/dellAnalyzer';
44
import fs from 'fs';
55
import path from 'path';
6+
import { getResponseData } from './utils/utils'
67

7-
const router = Router();
8-
9-
interface RequestWithBody extends Request {
8+
interface BodyRequest extends Request {
109
body: {
1110
[key: string]: string | undefined;
1211
}
1312
}
1413

15-
router.get('/', (req: Request, res: Response) => {
14+
const router = Router();
15+
16+
const checkLogin = (req: Request, res: Response, next: NextFunction) => {
17+
const isLogin = req.session ? req.session.login : false;
18+
if (isLogin) {
19+
next();
20+
} else {
21+
res.json(getResponseData(null, '请先登录'));
22+
}
23+
};
24+
25+
router.get('/', (req: BodyRequest, res: Response) => {
1626
const isLogin = req.session ? req.session.login : undefined;
1727
if (isLogin) {
1828
res.send(`
@@ -39,11 +49,11 @@ router.get('/', (req: Request, res: Response) => {
3949

4050
})
4151

42-
router.post('/login', (req: RequestWithBody, res: Response) => {
52+
router.post('/login', (req: BodyRequest, res: Response) => {
4353
const { password } = req.body;
4454
const isLogin = req.session ? req.session.login : undefined;
4555
if (isLogin) {
46-
res.send('已经登录过')
56+
res.json(getResponseData(true));
4757
} else {
4858
if (password === '123') {
4959
if (req.session) {
@@ -53,45 +63,44 @@ router.post('/login', (req: RequestWithBody, res: Response) => {
5363
}, 2000)
5464
}
5565
} else {
56-
res.send('登录失败')
66+
res.json(getResponseData(false, '登录失败'));
5767
}
5868
}
5969
})
6070

61-
router.get('/logout', (req: RequestWithBody, res: Response) => {
71+
router.get('/logout', (req: BodyRequest, res: Response) => {
6272
if (req.session) {
6373
req.session.login = undefined;
6474
}
65-
res.redirect('/');
66-
// res.send("已经退出了")
75+
res.json(getResponseData(true));
6776
})
6877

69-
router.get('/getData', (req: RequestWithBody, res: Response) => {
78+
router.get('/getData', checkLogin, (req: BodyRequest, res: Response) => {
7079
const isLogin = req.session ? req.session.login : false;
7180
if (isLogin) {
7281
// 爬虫url:http://www.dell-lee.com/typescript/demo.html?secret=secret
7382
const secret = 'secretKey';
7483
const url = `http://www.dell-lee.com/typescript/demo.html?secret=${secret}`;
7584
const anlayzer = DellAnalyzer.getInstance();
7685
new Crowller(url, anlayzer);
77-
res.send('getData success')
86+
res.json(getResponseData("爬取成功"));
7887
} else {
79-
res.send('请登录后进行爬取')
88+
res.json(getResponseData(false, "用户尚未登录,请登录之后进行数据爬取"));
8089
}
8190
})
8291

83-
router.get('/showData', (req: RequestWithBody, res: Response) => {
92+
router.get('/showData', checkLogin, (req: BodyRequest, res: Response) => {
8493
const isLogin = req.session ? req.session.login : false;
8594
if (isLogin) {
8695
try {
8796
const position = path.resolve(__dirname, '../data/course.json');
8897
const result = fs.readFileSync(position, 'utf-8');
89-
res.json(JSON.parse(result));
98+
res.json(getResponseData(JSON.parse(result)));
9099
} catch (e) {
91-
res.send("尚未爬取到数据")
100+
res.json(getResponseData(false, "暂无数据"));
92101
}
93102
} else {
94-
res.send("用户尚未登录,请登录之后进行数据展示")
103+
res.json(getResponseData(false, "用户尚未登录,请登录之后进行数据展示"));
95104
}
96105
})
97106

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
interface Result {
2+
success: boolean;
3+
errMsg?: string;
4+
data: any
5+
}
6+
7+
const getResponseData = (data: any, errMsg?: string): Result => {
8+
if (errMsg) {
9+
return {
10+
success: false,
11+
errMsg,
12+
data
13+
}
14+
}
15+
return {
16+
success: true,
17+
data
18+
}
19+
}
20+
export { getResponseData }

0 commit comments

Comments
 (0)