Skip to content

开发部署

注意:本章节可以跳过,充分熟练使用 yiapi 开发后再看。

请严格按照顺序操作,尤其是数据库同步操作。

每次更新依赖,一定要记得及时同步系统表结构!!!

开发流程

  1. tables 目录中设计好数据库表结构。
  2. config 目录下的配置文件中配置好正式环境的 mysqlredis 等参数。
  3. apis 目录中开发接口功能。
  4. 执行 pnpm run build 运行接口。

可以看到,使用 yiapi 开发接口功能,关键步骤只有 1 个,那就是 开发接口

再次提醒!!!

使用 yiapi 进行后端接口开发,只需要关注 1 个事情。

像其他项目一样,先设计好表结构。

然后,直接写接口。其他的一切,都不用管,yiapi 已经全部搞定!

接口开发也非常简单。

ps:目前看不懂不要紧,后面章节会详解

接口开发

javascript
// 工具函数
import { fnRoute, fnSchema } from '@yicode/yiapi/fn.js';
// 配置文件
import { httpConfig } from '@yicode/yiapi/config/http.js';
import { schemaHelperConfig } from '@yicode/yiapi/config/schemaHelper.js';
// 数据库表
import { tableData } from '../../tables/example.js';
// 接口元数据
import { metaConfig } from './_meta.js';

export default async (fastify) => {
    // 当前文件的路径,fastify 实例
    fnRoute(import.meta.url, fastify, metaConfig, {
        // 请求参数约束
        schemaRequest: {
            type: 'object',
            properties: {
                nickname: fnSchema(tableData.nickname),
                age: fnSchema(tableData.age)
            },
            required: ['title']
        },

        // 执行函数
        apiHandler: async (req, res) => {
            const trx = await fastify.mysql.transaction();
            try {
                const newsModel = trx('news');

                const result = await newsModel //
                    .clone()
                    .insertData({
                        title: req.body.title,
                        thumbnail: req.body.thumbnail,
                        content: req.body.content
                    });

                throw new Error('123');
                await trx.commit();
                return {
                    ...httpConfig.INSERT_SUCCESS,
                    data: result
                };
            } catch (err) {
                await trx.rollback();
                fastify.log.error(err);
                return httpConfig.INSERT_FAIL;
            }
        }
    });
};

部署

yiapi 使用 pm2 进行正式环境的部署和管理

ps:pm2 的知识要你自己去学习了解,本教程只有 yiapi 使用教程。

全局安装 pm2

bash
npm install -g pm2

正式环境运行

bash
npm run build

反向代理https静态文件托管

推荐使用 caddy,简单、方便、高效,自动配置域名的 https

配置文件 Caddyfile 写法参考:

bash
# 静态资源托管
https://yicode.tech, https://www.yicode.tech {
	root * /wwwroot/yicode.tech/site

	file_server
}

# 接口反向代理
https://api.yicode.tech {
	reverse_proxy /* http://127.0.0.1:3000 {
		header_up Host {http.reverse_proxy.upstream.hostport}
		header_down Access-Control-Allow-Headers *
		header_down Access-Control-Allow-Origin *
	}
}

总结

使用 yiapi 开发后端接口就是这么简单,全部围绕着 开发业务接口 来进行。

真正做到了简单易用,方便快捷!

何以解忧,唯有代码。不忘初心,方得始终。