Commit 37c67cc8 by Beebuddy Builder

expressjs addPostMethod

1 parent cd92e6d1
{ {
"presets": ["@babel/preset-env"], "presets": ["@babel/preset-env"],
"plugins": ["@babel/plugin-proposal-optional-chaining"] "plugins": ["@babel/plugin-proposal-optional-chaining"]
} }
\ No newline at end of file
{ {
"presets": ["@babel/preset-env"], "presets": ["@babel/preset-env"],
"plugins": ["@babel/plugin-proposal-optional-chaining"] "plugins": ["@babel/plugin-proposal-optional-chaining"]
} }
\ No newline at end of file
...@@ -3,7 +3,10 @@ ...@@ -3,7 +3,10 @@
Object.defineProperty(exports, "__esModule", { Object.defineProperty(exports, "__esModule", {
value: true value: true
}); });
exports.default = startApp; exports.initial = initial;
exports.addPostMethod = addPostMethod;
exports.addGetMethod = addGetMethod;
exports.startApp = startApp;
var _express = _interopRequireDefault(require("express")); var _express = _interopRequireDefault(require("express"));
...@@ -19,47 +22,106 @@ var _v = _interopRequireDefault(require("uuid/v4")); ...@@ -19,47 +22,106 @@ var _v = _interopRequireDefault(require("uuid/v4"));
var _responseTime = _interopRequireDefault(require("response-time")); var _responseTime = _interopRequireDefault(require("response-time"));
var _ServiceData = _interopRequireDefault(require("../common/ServiceData"));
var _ResponseReply = _interopRequireDefault(require("../common/ResponseReply"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
var app = (0, _express.default)(); var app = (0, _express.default)();
var TAG = "[Application] "; var TAG = "[Application] ";
app.use((0, _cors.default)());
app.use(_bodyParser.default.json({
limit: '50mb'
}));
app.use(function (req, res, next) {
req.headers.__reqId = "[" + (0, _v.default)() + "] ";
req.specialType = "request";
req.startTime = new Date().getTime(); // stamp time start inservice
_logger.default.info(req, "".concat(TAG, "Call \"").concat(req.originalUrl, "\"")); function initial() {
app.use((0, _cors.default)());
app.use(_bodyParser.default.json({
limit: '50mb'
}));
app.use(function (req, res, next) {
req.headers.__reqId = "[" + (0, _v.default)() + "] ";
req.specialType = "request";
req.startTime = new Date().getTime(); // stamp time start inservice
_logger.default.info(req, "".concat(TAG, ":: Request Header :: ").concat(JSON.stringify(req.headers))); _logger.default.info(req, "".concat(TAG, "Call \"").concat(req.originalUrl, "\""));
_logger.default.info(req, "".concat(TAG, ":: Request Data :: ").concat(JSON.stringify(req.body))); _logger.default.info(req, "".concat(TAG, ":: Request Header :: ").concat(JSON.stringify(req.headers)));
next(); _logger.default.info(req, "".concat(TAG, ":: Request Data :: ").concat(JSON.stringify(req.body)));
});
app.use((0, _responseTime.default)(function (req, res, time) { next();
var totalTimeInService = time;
if (totalTimeInService > 100) {
_logger.default.warning(req, TAG + "Total time in service [over 100ms] : ", Math.round(totalTimeInService), " ms");
} else {
_logger.default.info(req, TAG + "Total time in service : ", Math.round(totalTimeInService), " ms");
}
}));
/**
* Show App Detail
*/
app.all("/app/version", function (req, res) {
res.send({
appName: _app_config.default.appName,
description: _app_config.default.description,
version: _app_config.default.version
}); });
}); app.use((0, _responseTime.default)(function (req, res, time) {
var totalTimeInService = time;
if (totalTimeInService > 100) {
_logger.default.warning(req, TAG + "Total time in service [over 100ms] : ", Math.round(totalTimeInService), " ms");
} else {
_logger.default.info(req, TAG + "Total time in service : ", Math.round(totalTimeInService), " ms");
}
}));
/**
* Show App Detail
*/
app.all("/app/version", function (req, res) {
res.send({
appName: _app_config.default.appName,
description: _app_config.default.description,
version: _app_config.default.version
});
});
}
function addPostMethod(uri, processor) {
app.post(uri,
/*#__PURE__*/
function () {
var _ref = _asyncToGenerator(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee(req, res) {
var sv, createResult;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.prev = 0;
sv = new _ServiceData.default();
sv.setData(req, res);
_context.next = 5;
return processor.process(sv);
case 5:
createResult = _context.sent;
res.send(_ResponseReply.default.success(createResult));
_context.next = 13;
break;
case 9:
_context.prev = 9;
_context.t0 = _context["catch"](0);
_logger.default.error(_context.t0 + '');
res.send(_ResponseReply.default.error(_context.t0));
case 13:
case "end":
return _context.stop();
}
}
}, _callee, null, [[0, 9]]);
}));
return function (_x, _x2) {
return _ref.apply(this, arguments);
};
}());
}
function addGetMethod(uri, process) {}
function startApp() { function startApp() {
var server = app.listen(_app_config.default.systemConfig.APP_START_PORT, function () { var server = app.listen(_app_config.default.systemConfig.APP_START_PORT, function () {
......
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var ResponseReply =
/*#__PURE__*/
function () {
function ResponseReply() {
_classCallCheck(this, ResponseReply);
}
_createClass(ResponseReply, null, [{
key: "success",
/**
*
* @param {*} responseData
* @param {String} message
*/
value: function success() {
var responseData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
return {
success: true,
resultSuccess: true,
resultMessage: "" + message,
resultData: responseData
};
}
/**
*
* @param {String} message
*/
}, {
key: "error",
value: function error() {
var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
return {
success: false,
resultSuccess: false,
resultMessage: "" + message,
resultData: {}
};
}
}]);
return ResponseReply;
}();
var _default = ResponseReply;
exports.default = _default;
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var ServiceData =
/*#__PURE__*/
function () {
function ServiceData() {
_classCallCheck(this, ServiceData);
}
/**
*
* @param {*} serviceData
*/
_createClass(ServiceData, [{
key: "set",
value: function set(serviceData) {
this.body = serviceData.body;
this.headers = serviceData.headers;
this.req = serviceData.req;
this.res = serviceData.res;
}
/**
*
* @param {*} req
* @param {*} res
*/
}, {
key: "setData",
value: function setData(req, res) {
this.body = req.body;
this.headers = req.headers;
this.req = req;
this.res = res;
}
}]);
return ServiceData;
}();
exports.default = ServiceData;
\ No newline at end of file
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var SystemMode = {
is_dev_mode: false
};
var _default = SystemMode;
exports.default = _default;
\ No newline at end of file
...@@ -15,4 +15,20 @@ export const ENV = { ...@@ -15,4 +15,20 @@ export const ENV = {
} }
export const connectMongo; export const connectMongo;
export const AppApi;
\ No newline at end of file
class ServiceData{
body:JSON;
headers:JSON;
}
class Processor {
static process(sv:ServiceData) :JSON {}
}
export const AppApi = {
initial : Function(),
addPostMethod : async function(uri:string,processor:Processor):void{} ,
addGetMethod : async function(uri:string,processor:Processor):void{} ,
startApp : function():void{}
};
\ No newline at end of file
...@@ -9,7 +9,7 @@ var _dotenv = _interopRequireDefault(require("dotenv")); ...@@ -9,7 +9,7 @@ var _dotenv = _interopRequireDefault(require("dotenv"));
var _connect_db = _interopRequireDefault(require("./utils/mongodb/connect_db")); var _connect_db = _interopRequireDefault(require("./utils/mongodb/connect_db"));
var _app = _interopRequireDefault(require("./appapi/app")); var _app = require("./appapi/app");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
...@@ -52,5 +52,10 @@ var ENV = { ...@@ -52,5 +52,10 @@ var ENV = {
exports.ENV = ENV; exports.ENV = ENV;
var connectMongo = new _connect_db.default(); var connectMongo = new _connect_db.default();
exports.connectMongo = connectMongo; exports.connectMongo = connectMongo;
var AppApi = _app.default; var AppApi = {
initial: _app.initial,
addPostMethod: _app.addPostMethod,
addGetMethod: _app.addGetMethod,
startApp: _app.startApp
};
exports.AppApi = AppApi; exports.AppApi = AppApi;
\ No newline at end of file
...@@ -4,48 +4,72 @@ import bodyParser from "body-parser"; ...@@ -4,48 +4,72 @@ import bodyParser from "body-parser";
import logger from "../utils/logger/logger"; import logger from "../utils/logger/logger";
import appConfig from "../config/app_config"; import appConfig from "../config/app_config";
import uuidv4 from 'uuid/v4'; import uuidv4 from 'uuid/v4';
import responseTime from 'response-time' import responseTime from 'response-time';
import ServiceData from '../common/ServiceData'
import ResponseReply from '../common/ResponseReply'
const app = express(); const app = express();
const TAG = "[Application] "; const TAG = "[Application] ";
export function initial() {
app.use(cors());
app.use(bodyParser.json({
limit: '50mb'
}));
app.use((req, res, next) => {
req.headers.__reqId = "[" + uuidv4() + "] ";
req.specialType = "request";
req.startTime = new Date().getTime(); // stamp time start inservice
logger.info(req, `${TAG}Call "${req.originalUrl}"`);
logger.info(req, `${TAG}:: Request Header :: ${JSON.stringify(req.headers)}`);
logger.info(req, `${TAG}:: Request Data :: ${JSON.stringify(req.body)}`);
next();
});
app.use(responseTime((req, res, time) => {
const totalTimeInService = time;
if (totalTimeInService > 100) {
logger.warning(req, TAG + "Total time in service [over 100ms] : ", Math.round(totalTimeInService), " ms")
} else {
logger.info(req, TAG + "Total time in service : ", Math.round(totalTimeInService), " ms")
}
}));
/**
* Show App Detail
*/
app.all("/app/version", (req, res) => {
res.send({
appName: appConfig.appName,
description: appConfig.description,
version: appConfig.version
})
});
}
app.use(cors());
app.use(bodyParser.json({ export function addPostMethod(uri, processor) {
limit: '50mb' app.post(uri, async (req, res) => {
})); try {
app.use((req, res, next) => { const sv = new ServiceData();
req.headers.__reqId = "[" + uuidv4() + "] "; sv.setData(req, res);
req.specialType = "request"; const createResult = await processor.process(sv);
req.startTime = new Date().getTime(); // stamp time start inservice res.send(ResponseReply.success(createResult));
logger.info(req, `${TAG}Call "${req.originalUrl}"`); } catch (error) {
logger.info(req, `${TAG}:: Request Header :: ${JSON.stringify(req.headers)}`); logger.error(error + '')
logger.info(req, `${TAG}:: Request Data :: ${JSON.stringify(req.body)}`); res.send(ResponseReply.error(error));
next(); }
}); });
}
app.use(responseTime((req, res, time) => {
const totalTimeInService = time; export function addGetMethod(uri, process) {
if(totalTimeInService > 100){
logger.warning(req , TAG+"Total time in service [over 100ms] : " ,Math.round(totalTimeInService) , " ms" ) }
}else{
logger.info(req , TAG+"Total time in service : " ,Math.round(totalTimeInService) , " ms") export function startApp() {
}
}));
/**
* Show App Detail
*/
app.all("/app/version",(req,res) => {
res.send({
appName : appConfig.appName,
description : appConfig.description,
version : appConfig.version
})
});
export default function startApp() {
const server = app.listen(appConfig.systemConfig.APP_START_PORT, () => { const server = app.listen(appConfig.systemConfig.APP_START_PORT, () => {
logger.info(`${TAG}Starting ${appConfig.appName} (Version ${appConfig.version}) , Listening on port ${appConfig.systemConfig.APP_START_PORT} !`) logger.info(`${TAG}Starting ${appConfig.appName} (Version ${appConfig.version}) , Listening on port ${appConfig.systemConfig.APP_START_PORT} !`)
...@@ -53,5 +77,5 @@ export default function startApp() { ...@@ -53,5 +77,5 @@ export default function startApp() {
// Set timeout for server // Set timeout for server
server.setTimeout(1000 * 60 * 30); server.setTimeout(1000 * 60 * 30);
} }
\ No newline at end of file
class ResponseReply {
/**
*
* @param {*} responseData
* @param {String} message
*/
static success(responseData = {},message = ""){
return {
success: true,
resultSuccess: true,
resultMessage: "" + message,
resultData: responseData
};
}
/**
*
* @param {String} message
*/
static error(message = ""){
return {
success: false,
resultSuccess: false,
resultMessage: "" + message,
resultData: {}
};
}
}
export default ResponseReply;
export default class ServiceData {
constructor() {}
/**
*
* @param {*} serviceData
*/
set(serviceData) {
this.body = serviceData.body;
this.headers = serviceData.headers;
this.req = serviceData.req;
this.res = serviceData.res;
}
/**
*
* @param {*} req
* @param {*} res
*/
setData(req, res) {
this.body = req.body;
this.headers = req.headers;
this.req = req;
this.res = res;
}
}
\ No newline at end of file
const SystemMode = {
is_dev_mode: false
};
export default SystemMode;
\ No newline at end of file
...@@ -15,4 +15,20 @@ export const ENV = { ...@@ -15,4 +15,20 @@ export const ENV = {
} }
export const connectMongo; export const connectMongo;
export const AppApi;
\ No newline at end of file
class ServiceData{
body:JSON;
headers:JSON;
}
class Processor {
static process(sv:ServiceData) :JSON {}
}
export const AppApi = {
initial : Function(),
addPostMethod : async function(uri:string,processor:Processor):void{} ,
addGetMethod : async function(uri:string,processor:Processor):void{} ,
startApp : function():void{}
};
\ No newline at end of file
import dotenv from 'dotenv' import dotenv from 'dotenv'
import ConnectMongo from './utils/mongodb/connect_db'; import ConnectMongo from './utils/mongodb/connect_db';
import _AppApi from './appapi/app' import { initial, addPostMethod, addGetMethod, startApp } from './appapi/app'
dotenv.config(); dotenv.config();
export class Utils { export class Utils {
...@@ -10,17 +10,23 @@ export class Utils { ...@@ -10,17 +10,23 @@ export class Utils {
* @param {String} str * @param {String} str
* @returns {String} * @returns {String}
*/ */
static printf(str){ static printf(str) {
return `=======>${str}<=======` + JSON.stringify( process.env ); return `=======>${str}<=======` + JSON.stringify(process.env);
} }
} }
export const ENV = { export const ENV = {
env : process.env env: process.env
} }
export const connectMongo = new ConnectMongo(); export const connectMongo = new ConnectMongo();
export const AppApi = _AppApi;
\ No newline at end of file export const AppApi = {
initial,
addPostMethod,
addGetMethod,
startApp
};
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!