@forrestjs/ service-fastify (中文(简体) )
ForrestJS服务,帮助建立快活JS服务器.
戴莫:
https://codesandbox.io/s/ service-fastify-th8dq 页面存档备份,存于互联网档案馆
安装设置( S)
npm add @forrestjs/service-fastify
在您的 FastifyJS App 中设置 :
// index.js
const forrestjs = require('@forrestjs/core');
const fastifyService = require('@forrestjs/service-fastify');
// Create an Home Page for the Web App
const homePage = () => ({
target: '$FASTIFY_ROUTE',
handler: [
{
method: 'GET',
url: '/',
handler: async () => `Hello World`,
},
],
});
// Run the App:
forrestjs.run({
settings: {
fastify: {
port: 8080,
},
},
services: [fastifyService],
features: [homePage],
});
配置环境( E)
===================================================================================================================================================
设置服务器会聆听请求的端口 .
它回到环境变量:
process.env.REACT_APP_PORTprocess.env.PORT8080(默认值)
{\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}请把..
让您通过任意配置到 快捷实例。 。 。 .
* 固定.tdd.scope
让你设置测试API的根.
默认 : /test
A. 背景情况
ForrestJS App将装饰:
qq 结扎
引用 App 启动时配置的快捷实例 。 它允许完全操控运行中的服务器.
const fastify = getContext('fastify');
轴线
参考了Axios的静态实例.
const axios = getContext('axios');
await axios.get('/');
测试支持
服务快速化船舶测试设施 目标是使端-端测试方便您.
这个想法是让测试侵犯与快速实例互动 使用 REST API , 专供使用
process.env.NODE_ENV 设定为:
- 发展
- 测试
您也必须通过环境变量
DANGEROUSLY_ENABLE_FASTIFY_TDD_ENDPOINT=yes
这些测试特定的API在以下条件下暴露: /test/... 通过设置可以更改的根 fastify.tdd.root。 。 。 .
健康检查
根路线 /test 担任体检员。 任何测试客户端都应该等待 200 从此结束点回复,然后尝试运行任何呼叫.
默认情况下,这种健康检查没有逻辑,但您可以通过执行两个扩展来进行互动:
$FASTIFY_TDD_CHECK$FASTIFY_TDD_ROOT
测试 API
get://test/reset
运行 $FASTIFY_TDD_RESET 处理器以重置 App 状态 .
get://test/config?key=foobar&value=123
从 App 读取配置值
post://test/config { key: 'foobar', value: 555 }
将配置值写入 App
post://test/axios/stubs
delete://test/axios/stubs
扩展
所有被曝光的扩展
service-fastify为: 同步 执行 静态。 。 。 .
$FASTIFY 选项
它允许在程序上修改给 Fastify 实例的选项,在 瀑布。 。 。 .
registerAction({
target: '$FASTIFY_OPTIONS',
handler: (defaultOptions) => ({
...defaultOptions,
logger: true,
}),
});
$FASTIFY HACKS BEE
这钩火在任何其他步骤之前.
报告直接提到 fastify 举个例子.
registerAction({
target: '$FASTIFY_HACKS_BEFORE',
handler: ({ fastify }) => {
// Do something with the Fastify's instance
fastify.register();
},
});
* $FASTIFY HACKS AFTER
这钩火再过任何一步.
报告直接提到 fastify 举个例子.
registerAction({
target: '$FASTIFY_HACKS_AFTER',
handler: ({ fastify }) => {
// Do something with the Fastify's instance
fastify.register();
},
});
\ $FASTIFY 巴拉圭
请注册 Fastify 插件或装饰实例 .
registerAction({
hook: '$FASTIFY_PLUGIN',
handler: ({ registerPlugin }) => {
registerPlugin(/* fastify plugin */);
registerPlugin(/* fastify plugin */);
},
});
它也接受API来装饰快活实例:
registerAction({
hook: '$FASTIFY_PLUGIN',
handler: ({ decorateRequest }) => {
const user = { name: 'Marco' };
decorateRequest('user', user);
},
});
$FASTIFY 卢特
让我们在您快速化实例中执行一级路径 :
// With the API:
registerAction({
target: '$FASTIFY_ROUTE',
handler: ({ registerRoute }) =>
registerRoute({
method: 'GET',
url: '/',
handler: (req, res) => res.send('Hello World'),
}),
});
// With direct values:
registerAction({
target: '$FASTIFY_ROUTE',
handler: () => ({
method: 'GET',
url: '/',
handler: (req, res) => res.send('Hello World'),
}),
});
// With multiple routes
registerAction({
target: '$FASTIFY_ROUTE',
handler: () => [
{
method: 'GET',
url: '/p1',
handler: (req, res) => res.send('Page1'),
},
{
method: 'GET',
url: '/p2',
handler: (req, res) => res.send('Page2'),
},
],
});
* $FASTIFY TDD RESET
让您从任何服务或特性中注入状态重置逻辑 .
测试将调用 /test/reset 以触发 App 状态重置.
registerAction({
target: '$FASTIFY_TDD_CHECK',
handler: ({ registerTddReset }) => {
registerTddCheck(async ({ getContext }) => {
const pg = getContext('pg');
return pg.query('DROP SCHEMA "public" CASCADE');
});
},
});
$FASTIFY TDD CHECK (英语)
让你注射 preHandlers 页:1 /test 路线.
用于等待数据库连接或其他先决条件 .
registerAction({
target: '$FASTIFY_TDD_CHECK',
handler: ({ registerTddCheck }) => {
// Middleware style
registerTddCheck((request, reply, next) => {
console.log('Healthcheck with callback');
next();
});
// Async style
registerTddCheck(async (request, reply) => {
console.log('Asynchronous healthcheck');
});
},
});
* $FASTIFY TDD ROOT
让您执行返回体 /test 路线.
registerAction({
target: '$FASTIFY_TDD_ROOT',
name: 'registerTddRoute',
handler: () => (request, reply) => reply.send('ok'),
});
* $FASTIFY TDD ROOT
让你延伸 /test API 有自定义子路由.
它的作用完全一样 $FASTIFY_ROUTE,但您定义的所有路径都带有测试前缀.