소수전공 6회차) Joi를 활용해 로그인 규칙 정하기, LOL api로 request 해보기

2017. 12. 21. 21:29프로그래밍(주력)/JAVASCRIPT

request를 활용해

소환사 이름을 가지고 정보를 가져오는 코드 

r.js 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const request = require('request');
const qs = require('querystring');
// request.post(
// { url : 'http://127.0.0.1:4321/api/user',
// form: {userId : 'blgada12', userPw: '12321232'},
// },
// (err, res, body) => {
//     console.log(err);
//     console.log(body);
// });
let url = "https://kr.api.riotgames.com";
let apiKey = "RGAPI-e07c6125-1c2e-407d-a853-7d8772e35335";
let apiAuth = {'X-Riot-Token': apiKey};
let accountId = 207625593;
 
request.get({
  url:  url + '/lol/summoner/v3/summoners/by-name/'+qs.escape('타릭장인 로리콘')+'?api_key='+apiKey,
}, (err, res, body) => {
  console.log(err, body);
})
 
request.get({
  url:  url + '/lol/match/v3/matchlists/by-account/'+accountId+'?api_key='+apiKey,
}, (err, res, body) => {
  console.log(err, body);
})
 
cs


Joi.string().min(4).max(16).required(), => 최소 4글자 최대 16글자

userController.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const Joi = require('joi');
const model = {
    user: require('./userModel'),
}
 
let validater = (scheme, prop = 'body', opt={}) => {
    return(req, res, next) => {
      Joi.validate(req[prop], scheme, (err, data) => {
        if (err) {
            next(err);
        }else {
            req[prop] = data;
            next();
        }
      });
    };
  };
 
exports.checkSession = (req, res) => {
    console.log(req.user);
    if (req.user) {
        res.send('SESSION CHECKED');
    } else {
        res.send('SESSION NOT DEFINED');
    }
}
 
exports.validate_login = validater({
    userId: Joi.string().min(4).max(16).required(),
    userPw: Joi.string().min(8).max(64).required(),
    name: Joi.string().min(2).max(16).required().when('userId', {
      'is': Joi.string().max(3),
      'then': Joi.optional(),
    })
})
 
 
exports.login = (req, res) => {
    console.log("ASD");
    res.send(200, {
        success: true,
        message: 'Authentication success!',
    });
}
 
exports.logout = (req, res) => {
    if (req.user) {
        req.logout()
    console.log(req.user);
    res.send('SESSION DELETED');
    } else {
        res.send('SESSION NOT DEFINED');
    }
}
 
cs


첨부파일

sunrin_nodejs_2017-master-2.zip