2.0.7 • Published 5 months ago
nylon-rs v2.0.7
Nylon Experimental
Nylon is a web framework for Node.js built with Tokio, Tower, Hyper, and Napi-rs
Installation
npm install nylon-rs
or
yarn add nylon-rs
Usage
import { Nylon, Logger, Level, Request, Response, HttpException } from 'nylon-rs'
import { getHeapStatistics } from 'v8'
import os from 'os'
async function bootstrap() {
let logger = new Logger(Level.Info)
let app = new Nylon()
app.get('/', [
async (ctx) => {
let req = new Request(ctx)
let res = new Response(ctx)
res.json({
data: {
name: 'Nylon',
version: '1.0.0',
path: req.path(),
query: req.queries(),
user_agent: req.header('user-agent')
}
})
return res.jump()
},
async (ctx) => {
// throw new Error(HttpException(401, 'Unauthorized'))
let res = new Response(ctx)
res.status(201)
return res.end()
}
])
app.get('/:name', [
async (ctx) => {
let req = new Request(ctx)
let res = new Response(ctx)
res.json({
data: {
is_params: true,
name: 'Nylon',
version: '1.0.0',
path: req.path(),
query: req.queries(),
user_agent: req.header('user-agent')
}
})
return res.jump()
},
async (ctx) => {
// throw new Error(HttpException(401, 'Unauthorized'))
let res = new Response(ctx)
res.status(201)
return res.end()
}
])
app.post('/', [
async (ctx) => {
let req = new Request(ctx)
let res = new Response(ctx)
let multipart = await req.multipart({
limit: '5mb', // 10mb, 1kb only support kb, mb // 10 * 1024 * 1024
allowed_fields: ['name', 'file'] // optional
})
console.log('multipart', multipart)
res.json({
data: {
method: req.method(),
name: 'Nylon',
version: '1.0.0',
user_agent: req.header('user-agent')
}
})
return res.jump()
},
async (ctx) => {
// throw new Error(HttpException(401, 'Unauthorized'))
let res = new Response(ctx)
res.status(201)
return res.end()
}
])
await app.listen(3000, '0.0.0.0', () => {
let scopeScope = logger.scope('Bootstrap')
scopeScope.info(['Worker', process.pid + ' is alive!'].join(' '))
scopeScope.info(['HOST_NAME', os.hostname()].join(' '))
scopeScope.info(['Platform', os.platform()].join(' '))
scopeScope.info(['Node Heap size limit', `${getHeapStatistics().heap_size_limit / (1024 * 1024)} Mb`].join(' '))
scopeScope.info(`🚀 Application is running on: 0.0.0.0:3000`)
})
}
// Bootstrap for bun 1.0.x
// @ts-ignore
// await bootstrap().then(() => {
// console.log('Bootstrap done!')
// })
bootstrap().then(() => {
console.log('Bootstrap done!')
})
2.0.7
5 months ago
2.0.3
5 months ago
2.0.5
5 months ago
2.0.4
5 months ago
2.0.6
5 months ago
1.1.13
7 months ago
1.1.12
11 months ago
1.1.11
12 months ago
1.1.10
12 months ago
1.1.9
12 months ago
1.1.8
12 months ago
1.1.7
12 months ago
1.1.3
12 months ago
1.1.1
12 months ago
1.1.0
12 months ago
1.0.12
12 months ago
1.0.11
12 months ago
1.0.10
12 months ago
1.0.9
12 months ago
0.0.8
12 months ago
1.0.8
12 months ago
1.0.7
12 months ago
1.0.6
12 months ago
1.0.5
12 months ago
1.0.4
12 months ago
1.0.3
12 months ago
1.0.1
12 months ago
1.0.0
12 months ago