Статика
Бывает случаи когда нам нужно раздавать статику (картинки, видео, документы и т.д.). Это можно сделать как через nginx, так и средствами нашего api. Покажу как реализовать статику из файловой системы, но так же можно реализовать, к примеру, выгрузку из бд. Для начала нам нужны два пакета:
NPM:
npm i -s fastify-static path
YARN:
yarn add fastify-static path
После чего добавляем fastify-static
в плагины fastify:
Доступ к статике будет по такому url: https://example.com/public/test.jpg
const path = require('path');
fastify.register(require('fastify-static'), {
root: path.join(__dirname, 'public'),
prefix: '/public/',
})
Так же можно сделать контроллер, который будет выдавать эту статику.
Создаём папку data и в ней [filename].js. Доступ к статике будет по такому url: https://example.com/data/test.jpg:
module.exports = {
method: "GET",
auth: false,
admin: false,
config: {},
async execute(fastify, request, reply) {
try {
let a = request.params.filename;
return reply.sendFile(a)
}
catch (error) {
console.log(err);
return fastify.response.All(500, {}, reply);
}
}
}
В итоге мы получим всё то же самое, но в случае с контроллером мы можем управлять доступами и брать файлы из бд или любого другого места.
Last updated
Was this helpful?