小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

goctl template一定制化服务配置生成

# go-zero,go-zero 额外说明

收录于:17天前

官网介绍:

模板(Template)是数据驱动生成的基础。所有代码(rest api、rpc、model、docker、kube)生成都将依赖于模板。默认情况下,模板生成器会选择内存中的模板进行生成,对于需要修改模板的开发者来说,需要下载模板来修改模板。下次生成代码时会加载指定路径下的模板进行生成。

简单的goctl模板可以一键生成api、rpc、模型配置文件。在之前的demo中,使用了以下命令来生成代码:

## 生成api
goctl api new demo

## 生成rpc
goctl rpc new demo

和其他 CLI 命令

在这里插入图片描述
每需要一个配置文件都需要使用对应的cli是很麻烦的,而且会生成许多不需要的文件,goctl就可以一键化生成所有的配置文件,而无需调用单个的cli生成命令。

在这里插入图片描述
对于windows的开发,在安装了goctl的情况下,直接使用goctl template init会在用户目录生成一个文件.goctl

在这里插入图片描述
进入该目录是一个以goctl版本为名称的目录,复制该目录到项目下:

在这里插入图片描述

那么常用的api和rpc文件夹就是生成api服务和rpc服务的模板。

在这里插入图片描述
通过这些定义了服务的模板就可以生成对应的目录和文件,那么如何通过该这些tpl模板生成源文件呢?

给任意goctl命令添加–home 选项指定templete目录就可以根据tpl模板生成对应的配置文件。

在这里插入图片描述
通过goctl api -home [tmmplate_path] -o [output_path]

在这里插入图片描述

tmmplate_path是从.goctl复制到项目的目录,也就是goctl版本为目录的上一级目录;output_path是输出目录。

以下是初始目录,只是goctl的模板目录

在这里插入图片描述
使用goctl api -home命令,如下

goctl api -home ./goctltpl -o C:\xwh\go-learn\goctl-tpl\demoapi.api

在这里插入图片描述
在设置的输出目录生成了api文件,注意文件一定要带上.api后缀,不然生成的文件没有后缀。
在这里插入图片描述
如下所示生成了api文件

在这里插入图片描述

通过goctl template生成了一个api文件,api文件是构建api服务的关键,那么可以看出,goctl template的作用是用来定制化api服务。

goctl api go --api [dir] --dir [target]可知生成一个api服务目录,如下

在这里插入图片描述
但是其内部的内容是不变的,不了在任何位置使用插件都是一样的,但是通过tpl文件就可以定制化操作,生成自定义的目录结构。

通过go template init生成goctl template文件后,每个tpl文件修改,如下

在这里插入图片描述
tpl文件和生成api目录部分对应,有些实现了融合,对tpl修改之后在使用goctl api go --api [dir] --dir [target] --home [tpl目录]就不再生成默认的目录结构了,而是定制的目录结构。

例如,没有指定定制的goctl模板仍然默认生成

在这里插入图片描述
在这里插入图片描述

如下图,自定义配置:

  1. 修改部分tpl
    在这里插入图片描述
    在这里插入图片描述

  2. 使用修改后的tpl配置
    在这里插入图片描述

  3. 检查是否完成

配置生效,多出了tpl的配置
在这里插入图片描述
方法生效,多出了之前的配置
在这里插入图片描述
使用go template实现了定制的服务代码自动生成。

. . .

相关推荐

额外说明

JMeter压测sql语句

配置参考: https://blog.51cto.com/u_11009785/2384888 这两处要一样:        跟压测接口没什么两样,只是换成了sql语句而已。    

额外说明

初始进入算法(更新数组)

一,时间复杂度和空间复杂度 二,线性数据结构: 1.数组 2.栈 3.哈希 4.队列 5.链表 数组:偏向查找功能。 //Array:数组 public class MyArray { private int[] array; priva

额外说明

力扣LeetCode:19. 删除链表的倒数第 N 个结点(Python)

题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 进阶:你能尝试使用一趟扫描实现吗? 题解 删除某一个节点,其实就是改一下相关的指针。直觉上,我们认为,如果已知待删除的结点的正向序号,那么题目会变得简单很多。因此最直接的算法是

额外说明

Minecraft安装资源包

Minecraft资源包简介 资源包(Resource Pack)是纹理包(texture packs)的替代品,系统允许玩家自定义纹理、模型、音乐、声音、语言等文本和字体,而不用修改任何代码。在Java版1.6.1 中,纹理包被替换为资源包,提供对纹理

额外说明

使用python进行编译:1、有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值 2、求两数之和

有一个长为n的数组A,求满足0≤a≤b<n的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值。 测试样例: [10,5],2 返回:0 class LongestDistance: def getDis(self, A):

额外说明

SpringBoot+Linux操作系统与项目部署(这一篇就够了|超详细)

-作者简介:练习时长两年半的Java up主 -个人主页:程序员老茶 - ps:点赞-是免费的,却可以让写博客的作者开兴好久好久- -系列专栏:Java全栈,计算机系列(火速更新中) - 格言:种一棵树最好的时间是十年前,其次是现在 -动动小手,点个关注

额外说明

Java成神路 —— 文件操作

文章目录 1.1 File 类概述和构造方法 1. File 类介绍 2. File 类的构造方法 3. 示例代码 1.2 File类创建功能 1. 方法分类 2. 示例代码 1.3 File类判断和获取功能 1. 判断功能 2. 获取功能 3. 示例代

额外说明

分布式事务解决方案:Seata

1. Seata介绍 (前身为Fescar),是一款开源的分布式事务解决方案,由阿里巴巴发起并维护,用于帮助应用程序管理和协调分布式事务。Seata支持多种分布式事务模式,其中最常见的是AT(原子性事务)模式。以下是Seata的一些重要特点和功能: 分布

额外说明

JavaScript函数eval的详细讲解

eval 是一个JavaScript函数,它用于将包含 JavaScript 表达式的字符串作为参数,并执行这些表达式。它可以用于动态地执行代码,但它也可能导致安全性问题和代码可读性问题,因此在使用时需要小心谨慎。 以下是关于 eval 函数的详细讲解:

额外说明

Windows系统因缺少msr2c.dll文件导致程序异常解决

其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个msr2c.dll文件(挑选

ads via 小工具