Ответы

Не будем тратить много времени на то, что занимает пять строк и, по факту, не будет изменяться больше никогда.

Ранее для ответа пользователю мы писали так :

 reply
      .code(200)
      .header('Content-Type', 'application/json; charset=utf-8')
      .send({ message: "I'm super api" });

Как по мне, не очень удобно, но если вам так нравится, то пожалуйста. Если все же вам не по душе такой способ, то установим пакет, позволяющий нам импортировать свои плагины для fastify: NPM:

npm i -s fastify-plugin

YARN:

yarn add fastify-plugin

Далее создадим в папке module файл response.js:

'use strict'

const fp = require('fastify-plugin');

const response = {
    async All(Code, Data, reply) {
        reply
            .code(Code)
            .header('Content-Type', 'application/json; charset=utf-8')
            .send(Data);
    }
}

module.exports = fp((fastify, options, next) => {
    fastify
        .decorate('response', response)
        .addHook('onClose', (fastify, done) => {
            fastify.response.close(done)
        }); next();
}, {
    fastify: '>=3.0.0',
    name: 'fastify-response'
})

и подключим его как плагин fastify в index.js:

fastify.register(require('response'));

Теперь сравним два метода отправки ответов:

// Первый метод отправки ответов пользователю
reply
     .code(200)
     .header('Content-Type', 'application/json; charset=utf-8')
     .send({ message: "I'm super api" });

// Второй метод
fastify.response.All(200, { message: `I'm super api` }, reply)

Почему response.All ? Это вырезка из моего пакета, где я проработал все коды 1хх, 2хх, 3хх, 4хх, 5хх. И пришёл к выводу, что реализация общей функции для всех кодов в ответах – более удобна в использовании, чем перечисление каждой ошибки по отдельности (вроде response.NotFound() и т.д.). А какой метод отправки вам нравится больше ? =)

Last updated

Was this helpful?