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

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

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

收录于:157天前

官网介绍:

模板(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实现了定制的服务代码自动生成。

. . .

相关推荐

额外说明

Python语法基础(一):变量和数据类型

前言: 本文开始介绍Python的语法,了解Python的变量定义和简单数据类型。 一.Python的变量 Python 变量是不需要声明数据类型的,由变量的值决定变量的类型。 #定义变量 str = 'HelloWorld!' #打印变量 print

额外说明

leetcode127(Word Solitaire:BFS算法寻找图中最短路径)

给定两个单词(beginWord 和 endWord)和一个字典,找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如下规则: 每次转换只能改变一个字母。 转换过程中的中间单词必须是字典中的单词。 说明: 如果不存在这样的转

额外说明

day15---(07)课程支付接口开发(准备)

1、在service模块下创建子模块service_order 2、在service_order引入相关依赖 <dependencies> <dependency> <groupId>com.github.wxpay</group

额外说明

java方法通用返回结果集封装

我们在封装方法的时候,有的时候除了需要返回数据结果集data,有的时候需要返回code(或者status) 或者 msg , 此时可以采取下面两种方式进行封装方法的返回值: 一.返回结果使用HashMap接收 1.方法中的数据封装到hashmap中

额外说明

【Unity3D-UGUI篇】Unity3D中UGUI的屏幕适配

一、前言 在开发中,常常遇到对于屏幕的UI适配工作,下面就来看一下如何进行屏幕适配。 二、正文 1、游戏屏幕适配 屏幕适配是为了让我们的项目能够跑在各种电子设备上(手机,平板,电脑) 那么了解是适配之前首先要了解两个知识点: 1-1、什么是像素? 单位面

额外说明

HNU-离散数学-工具箱系列5-求自反、对称、可传递闭包(集成版)

帮助你求解出离散数学作业上求自反、对称、可传递闭包的结果 (希望你仅仅用于检查作业而不是直接抄答案,因为离散数学思考比较重要) 例如:解决这道题求 自反、对称、可传递闭包 代码如下: #include<bits/stdc++.h> using names

额外说明

基于 chinese-roberta-wwm-ext 微调训练中文命名实体识别任务

一、模型和数据集介绍 1.1 预训练模型 chinese-roberta-wwm-ext 是基于 RoBERTa 架构下开发,其中 wwm 代表 Whole Word Masking,即对整个词进行掩码处理,通过这种方式,模型能够更好地理解上下文和语义关

额外说明

Redis安装配置,个人总结

1.下载Redis安装包并上传到Linux系统中 2.将Redis解压到跟目录 #tar -zxvf redis-unstable.tar.gz -C /root/ 3.进入root下redis目录执行make 前提 a) 安装c语言编译器gcc yum

额外说明

机器学习必修课 - 使用管道 Pipeline

目标:学习使用管道(pipeline)来提高机器学习代码的效率。 1. 运行环境:Google Colab import pandas as pd from sklearn.model_selection import train_test_split

额外说明

Windows系统目录logoncli.dll文件丢失的处理解决办法

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

ads via 小工具