http://macaronics.net/index.php/m03/nodejs/view/1800
2. axios 및 uuid-apikey ( 키생성 )설치
$npm i axios --save
$npm install uuid-apikey --save
https://www.npmjs.com/package/uuid-apikey
3. 테이블 생성 및 더미 데이터 생성
CREATE TABLE `t_member` ( `t_member` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `email` varchar(50) NOT NULL, `phone` varchar(20) NOT NULL, `apiKey` varchar(50), `uuid` varchar(50), PRIMARY KEY (`t_member`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
4. uuidAPIKey.create();
실행후 데이터베이스에 t_member 테이블에 저장
console.log(uuidAPIKey.create());
// {
// apiKey: '67QFMJP-6BS471D-JEB7X6E-FG33XJT',
// uuid: '31eefa4a-32f2-4385-9396-7e997c063ecb'
// }
INSERT INTO t_member (name, email, phone, apiKey, uuid) VALUES('홍길동', 'test@gmail.com', '010-1111-2222', '67QFMJP-6BS471D-JEB7X6E-FG33XJT', '31eefa4a-32f2-4385-9396-7e997c063ecb');
5. app.js 추가
var apiRouter = require('./routes/api');
app.use('/api', apiRouter);
6. routes 디렉토리 api.js 파일 생성
다음과 같이
var express = require('express');
var router = express.Router();
var axios = require('axios');
const uuidAPIKey = require('uuid-apikey');
var mysql = require('mysql');
var connection = mysql.createPool({
connectionLimit: 10,
host: '192.168.174.1',
port: '3308',
user: 'dev',
password: '1111',
database: 'dev'
});
/* GET home page. */
router.get('/users/:email/:apiKey/:type', function (req, res, next) {
const { email, apiKey, type } = req.params;
let dbApiKey = null;
let getDbUuid = null;
//req.session.authId
//세션값 또는 파라미터에서 가져온 email 값을 통해 데이터베이스 저장된 키값 및 아이디값 가져오기
const getMemberData = (callbackfunc) => {
//where email = 'test@gmail.com'
console.log("이메일 : " + email);
let dbParam = [];
dbParam.push(email);
connection.query("select apiKey , uuid from t_member where email =? ", dbParam, function (error, results, fields) {
if (error) throw error;
if (results[0] == null) {
res.send("Email is wrong ");
return;
}
//등록된 이메일 경우 api 아이디 및 키값 저장
dbApiKey = results[0].apiKey
getDbUuid = results[0].uuid;
//콜백함수
callbackfunc(results);
});
}
getMemberData(function (data) {
//uuidAPIKey.isAPIKey : 전달된 API 키 문자열이 유효한 API 키인지 테스트합니다.
//uuidAPIKey.check :API 키와 UUID가 동일한지 테스트합니다. API 키 또는 UUID가 유효하지 않은 경우 TypeError를 발생시킵니다.
// DB 에서 가져온 api 아이디 값을 uuid-apikey 제공해 주는 uuidAPIKey 함수를 통해 비교
if (!uuidAPIKey.isAPIKey(apiKey) || !uuidAPIKey.check(apiKey, getDbUuid)) {
res.send("The value provide " + apiKey + " is not a valid apiKey :");
return;
}
//DB 에서 자료를 가져오는 것이 정상이나, 여기서는 테스트상 더미데이터 자료를 제공해 주는 jsonplaceholder 사이트를 이용
axios.get('https://jsonplaceholder.typicode.com/todos/' + type)
.then((response) => {
res.send(response.data);
})
.catch(function (error) {
console.log(error);
res.send("type error");
});
});
});
module.exports = router;
참조 :













댓글 ( 5)
댓글 남기기