Fastify-ը փոքր Node շրջանակ է, որը նախատեսված է հետևի վեբ հավելվածների մշակման համար:
Այս հոդվածում մենք կանդրադառնանք, թե ինչպես ստեղծել հետին պլանային հավելվածներ Fastify-ով:
onSend
Մենք կարող ենք փոխել պատասխանի օգտակար բեռը, որն ուղարկվում է onSend
կեռիկով:
Օրինակ՝ կարող ենք գրել.
const fastify = require('fastify')({}) fastify.addHook('onSend', (request, reply, payload, done) => { const err = null; const newPayload = payload.replace('some-text', 'some-new-text') done(err, newPayload) }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
Մենք 'some-text'
պատասխանը փոխարինում ենք 'some-new-text'
ով:
Այնուհետև, երբ մենք GET հարցում ենք կատարում /
-ին, տեսնում ենք, որ 'some-new-text’
վերադարձված է:
Համարժեքորեն, մենք կարող ենք նույնն անել async
ֆունկցիայի հետ.
const fastify = require('fastify')({}) fastify.addHook('onSend', async (request, reply, payload) => { const newPayload = payload.replace('some-text', 'some-new-text') return newPayload }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
Մենք կարող ենք նաև հեռացնել պատասխանի ծանրաբեռնվածությունը հետևյալով.
const fastify = require('fastify')({}) fastify.addHook('onSend', (request, reply, payload, done) => { reply.code(304) const newPayload = null done(null, newPayload) }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
onResponse
onResponse
կեռիկը մեզ թույլ է տալիս գործարկել կոդը, երբ պատասխան է ուղարկվում:
Սա օգտակար վայր է վիճակագրություն հավաքելու համար:
Օրինակ՝ կարող ենք գրել.
const fastify = require('fastify')({}) fastify.addHook('onResponse', (request, reply, done) => { console.log(reply) done() }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
գրանցել reply
-ը:
Կարող ենք նաև գրել.
const fastify = require('fastify')({}) fastify.addHook('onResponse', async (request, reply) => { console.log(reply) return }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
նույն բանն անել։
onTimeout
onTimeout
կեռիկը մեզ թույլ է տալիս վերահսկել հարցումների ժամանակի ընդհատումները:
Օրինակ, մենք կարող ենք օգտագործել այն գրելով.
const fastify = require('fastify')({}) fastify.addHook('onTimeout', (request, reply, done) => { console.log('timed out') done() }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
or:
const fastify = require('fastify')({}) fastify.addHook('onTimeout', async (request, reply) => { console.log('timed out') return }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
ցանկացած հարցման ժամանակի վերջնաժամկետ գրանցելու համար:
Կեռիկներում սխալների կառավարում
Մենք կարող ենք բարձրացնել սխալները կեռիկներում և վերադարձնել սխալի պատասխանները, եթե կան սխալներ:
Օրինակ՝ կարող ենք գրել.
const fastify = require('fastify')({}) fastify.addHook('preHandler', (request, reply, done) => { reply.code(400) done(new Error('Some error')) }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
ավելացնել preHandler
կեռիկը և վերադարձնել 400 սխալ:
Մենք կարող ենք նաև անցնել Error
օրինակով done
ֆունկցիայի մեջ:
Նաև կարող ենք գրել.
const fastify = require('fastify')({}) fastify.addHook('onResponse', async (request, reply) => { throw new Error('Some error') }) const start = async () => { try { fastify.get('/', function (request, reply) { reply.send('some-text') }) await fastify.listen(3000, '0.0.0.0') } catch (err) { fastify.log.error(err) process.exit(1) } } start()
նույն բանն անել async
ֆունկցիաներով:
Եզրակացություն
Մենք կարող ենք ավելացնել տարբեր կեռիկներ Fastify-ի միջոցով իրադարձությունների և սխալների հետ աշխատելու համար: