Routing
Il router Lotto
è molto intuitivo e anche estensibile.
Basic
typescript
// Metodi HTTP
lotto.get('/', ({ res }) => res.text('GET /'))
lotto.post('/', ({ res }) => res.text('POST /'))
lotto.put('/', ({ res }) => res.text('PUT /'))
lotto.patch('/', ({ res }) => res.text('PATCH /'))
lotto.delete('/', ({ res }) => res.text('DELETE /'))
// Qualsiasi metodo HTTP
lotto.all('/', ({ res }) => res.text('ALL /'))
// Metodi HTTP
lotto.get('/', ({ res }) => res.text('GET /'))
lotto.post('/', ({ res }) => res.text('POST /'))
lotto.put('/', ({ res }) => res.text('PUT /'))
lotto.patch('/', ({ res }) => res.text('PATCH /'))
lotto.delete('/', ({ res }) => res.text('DELETE /'))
// Qualsiasi metodo HTTP
lotto.all('/', ({ res }) => res.text('ALL /'))
Path Parameters
Puoi usare il nostro helper param
...
typescript
lotto.get('/user/:id', ({ req, res }) => {
const userId = req.param('id')
...
})
lotto.get('/user/:id', ({ req, res }) => {
const userId = req.param('id')
...
})
oppure può recuperare tutti i parametri contemporaneamente:
typescript
lotto.get('/users/:userId/group/:groupId', ({ req, res }) => {
const { userId, groupId } = req.params
...
})
lotto.get('/users/:userId/group/:groupId', ({ req, res }) => {
const { userId, groupId } = req.params
...
})
Route concatenati
typescript
lotto
.get('/ping', ({ res }) => {
return res.text('GET /pong')
})
.post(({ res }) => {
return res.text('POST /pong')
})
.delete(({ res }) => {
return res.text('DELETE /pong')
})
lotto
.get('/ping', ({ res }) => {
return res.text('GET /pong')
})
.post(({ res }) => {
return res.text('POST /pong')
})
.delete(({ res }) => {
return res.text('DELETE /pong')
})
Base Path
Puoi specificare il base path della tua api quando istanzia la classe Lotto
.
typescript
...
const app = new Lotto({
prefix: '/api'
})
...
...
const app = new Lotto({
prefix: '/api'
})
...
use()
: Middleware
Se vuoi utilizzare del middleware personalizzato o anche i nostri che non sono inseriti nel framework come @lottojs/cors hai alcuni modi per farlo:
- Utilizzando la funzione
use
e registrare un middleware per tutti le route.
typescript
lotto.use(({ req, res, next }) => {
if (req.header('Authorization') === '1234') return next()
return res.status(401).json({
message: 'unauthorized.'
})
})
lotto.use(({ req, res, next }) => {
if (req.header('Authorization') === '1234') return next()
return res.status(401).json({
message: 'unauthorized.'
})
})
- Utilizzare la funzione
use
e registrare un middleware per una route specifica.
typescript
lotto.use('/hello', ({ req, res, next }) => {
if (req.header('Authorization') === '1234') return next()
return res.status(401).json({
message: 'unauthorized.'
})
})
lotto.use('/hello', ({ req, res, next }) => {
if (req.header('Authorization') === '1234') return next()
return res.status(401).json({
message: 'unauthorized.'
})
})
- Su ogni http method insieme al path e al handler.
typescript
lotto.get(
'/profile/me',
({ req, res, next }) => {
if (req.header('Authorization') === '1234') return next()
return res.status(401).json({
message: 'unauthorized.'
})
},
({ req, res }) => {
const { userId, groupId } = req.params
...
}
)
lotto.get(
'/profile/me',
({ req, res, next }) => {
if (req.header('Authorization') === '1234') return next()
return res.status(401).json({
message: 'unauthorized.'
})
},
({ req, res }) => {
const { userId, groupId } = req.params
...
}
)
use()
: Nidificazione Delle Route
La classe Router
non è pensata esclusivamente per essere estendibile dalla classe Lotto, quindi puoi anche usarla separatamente per separare e gestire meglio il tuo codice.
typescript
import { Lotto, Router } from '@lottojs/lotto'
const app = new Lotto()
app.get('/ping', ({ res }) => res.status(200).text('pong'))
const userRouter = new Router()
userRouter.get('/'), ({ res } => {
return res.status(200).text('user list')
})
app.use('/users', userRouter)
app.init()
import { Lotto, Router } from '@lottojs/lotto'
const app = new Lotto()
app.get('/ping', ({ res }) => res.status(200).text('pong'))
const userRouter = new Router()
userRouter.get('/'), ({ res } => {
return res.status(200).text('user list')
})
app.use('/users', userRouter)
app.init()