Bootstrapping
Setting up the web server
To bootstrap your server use the
init
method:init(boostrapModule: any, rootPath?: string, authProvider?: AuthProvider,httpsConfiguration:any)
bootstrapModule - the init module which use as entry point, contains references to other modules if needed.rootPath - Server uri prefix
authProvider - the authorization services, more on that on Authorization sectionhttpsConfiguration - configuration for setting the connection as https (mostly use for - {cert:certificatePath,key:keyPath})
import {HttpServer} from "@sugoi/server";
const server:HttpServer = HttpServer.init(BootstrapModule,"/api")
.build()
.listen(3000);
For setting static file serving use:
setStatic(pathToStatic:string,route?:string)
For setting middlewares use:
setMiddlewares(...(app)=>void)
For setting error handlers use:
setErrorHandlers((app) => void)
SugoiJS provides a predefined error handler named (defaultErrorHandler) which provides loggin the error and returning an error to the customer.
Example:
app.use(defaultErrorHandler(<boolean>isDev))
Full example:
(<HttpServer>server)
.setStatic("assets/admin","/admin")
.setStatic("assets/main")
.setMiddlewares((app) => {
app.use(bodyParser.json());
app.use(compression());
if (DEVELOPMENT) {
app.set('json spaces', 2);
app.use(cors());
app.use(require('morgan')('dev'));
}
app.use(express.static(paths.static));
})
.setErrorHandlers((app) => {
app.use(function (req, res, next) {
return res.sendFile(path.resolve(paths.index))
});
app.use(defaultErrorHandler(isDev));
});
After setting the middlewares and error handlers, build and listen to requests by:
server.build()
.listen(PORT, (error: Error) => {
if (error) {
logger.error(error.message);
throw error;
}
logger.debug(`Server running @ ${HOST}:${PORT}`);
});
This call will return http.Server instance which can be use for setting app variables, socket server and more.
server.setStatic("assets")
.setMiddlewares((app) => {
app.use(bodyParser.json());
app.use(compression());
})
.setErrorHandlers((app) => {
app.use(function (req, res, next) {
return res.sendFile(path.resolve(paths.index))
});
app.use((req,res,next)=>{
return function(err){
if(err instanceof SugoiServerError){
console.log.error(err.stack);
console.log.error(`${err.message} ${JSON.stringify(err.data)});
res.status(500).send("Internal error");
}
}
});
});
For retrieving the server application use the HttpServer instance method
getServer()
, this method will return the common server application which will allow you to use .get
,.put
,.use
etc..const httpServer = server.build();
const app = httpServer.getServer();
app.get("/",(req,res,next)=>{
res.json({success:true,data:{}});
})
httpServer.listen(3000)
SugoiJS support migrate existing project by providing hybrid mode.
For achieving this approach use the
initializeFrom
methodHttpServer.initializeFrom(sourceApp: TServer, bootstrapModule: any, authProvider?: TNewable<AuthProvider>)
TServer - http.Server | https.Server | { listen: (...args) => any }
import {HttpServer} from "@sugoi/server";
const server:HttpServer = HttpServer.initializeFrom(myExpressApp,ServerModule);
Last modified 4yr ago