Commit 37c67cc8 by Beebuddy Builder

expressjs addPostMethod

1 parent cd92e6d1
{
"presets": ["@babel/preset-env"],
"plugins": ["@babel/plugin-proposal-optional-chaining"]
}
\ No newline at end of file
{
"presets": ["@babel/preset-env"],
"plugins": ["@babel/plugin-proposal-optional-chaining"]
}
\ No newline at end of file
......@@ -3,7 +3,10 @@
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = startApp;
exports.initial = initial;
exports.addPostMethod = addPostMethod;
exports.addGetMethod = addGetMethod;
exports.startApp = startApp;
var _express = _interopRequireDefault(require("express"));
......@@ -19,15 +22,25 @@ var _v = _interopRequireDefault(require("uuid/v4"));
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 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 TAG = "[Application] ";
app.use((0, _cors.default)());
app.use(_bodyParser.default.json({
function initial() {
app.use((0, _cors.default)());
app.use(_bodyParser.default.json({
limit: '50mb'
}));
app.use(function (req, res, next) {
}));
app.use(function (req, res, next) {
req.headers.__reqId = "[" + (0, _v.default)() + "] ";
req.specialType = "request";
req.startTime = new Date().getTime(); // stamp time start inservice
......@@ -39,8 +52,8 @@ app.use(function (req, res, next) {
_logger.default.info(req, "".concat(TAG, ":: Request Data :: ").concat(JSON.stringify(req.body)));
next();
});
app.use((0, _responseTime.default)(function (req, res, time) {
});
app.use((0, _responseTime.default)(function (req, res, time) {
var totalTimeInService = time;
if (totalTimeInService > 100) {
......@@ -48,18 +61,67 @@ app.use((0, _responseTime.default)(function (req, res, time) {
} else {
_logger.default.info(req, TAG + "Total time in service : ", Math.round(totalTimeInService), " ms");
}
}));
/**
}));
/**
* Show App Detail
*/
app.all("/app/version", function (req, res) {
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() {
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 = {
}
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"));
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 }; }
......@@ -52,5 +52,10 @@ var ENV = {
exports.ENV = ENV;
var connectMongo = new _connect_db.default();
exports.connectMongo = connectMongo;
var AppApi = _app.default;
var AppApi = {
initial: _app.initial,
addPostMethod: _app.addPostMethod,
addGetMethod: _app.addGetMethod,
startApp: _app.startApp
};
exports.AppApi = AppApi;
\ No newline at end of file
......@@ -4,19 +4,23 @@ import bodyParser from "body-parser";
import logger from "../utils/logger/logger";
import appConfig from "../config/app_config";
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 TAG = "[Application] ";
export function initial() {
app.use(cors());
app.use(bodyParser.json({
app.use(cors());
app.use(bodyParser.json({
limit: '50mb'
}));
app.use((req, res, next) => {
}));
app.use((req, res, next) => {
req.headers.__reqId = "[" + uuidv4() + "] ";
req.specialType = "request";
req.startTime = new Date().getTime(); // stamp time start inservice
......@@ -24,28 +28,48 @@ app.use((req, res, next) => {
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) => {
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")
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) => {
app.all("/app/version", (req, res) => {
res.send({
appName : appConfig.appName,
description : appConfig.description,
version : appConfig.version
appName: appConfig.appName,
description: appConfig.description,
version: appConfig.version
})
});
});
}
export function addPostMethod(uri, processor) {
app.post(uri, async (req, res) => {
try {
const sv = new ServiceData();
sv.setData(req, res);
const createResult = await processor.process(sv);
res.send(ResponseReply.success(createResult));
} catch (error) {
logger.error(error + '')
res.send(ResponseReply.error(error));
}
});
}
export function addGetMethod(uri, process) {
}
export default function startApp() {
export function startApp() {
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} !`)
......
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 = {
}
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 ConnectMongo from './utils/mongodb/connect_db';
import _AppApi from './appapi/app'
import { initial, addPostMethod, addGetMethod, startApp } from './appapi/app'
dotenv.config();
export class Utils {
......@@ -10,17 +10,23 @@ export class Utils {
* @param {String} str
* @returns {String}
*/
static printf(str){
return `=======>${str}<=======` + JSON.stringify( process.env );
static printf(str) {
return `=======>${str}<=======` + JSON.stringify(process.env);
}
}
export const ENV = {
env : process.env
env: process.env
}
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!