Caddy实战(十二)| 插件开发之HelloWorld

点击上方蓝色“飞雪无情”关注我,设个星标,第一时间看文章

连载了十一篇,终于讲到了大家最关心的Caddy的插件开发。插件开发是一种提供给我们开发者定制化Caddy的能力,让我们可以根据自己的需求,通过插件的机制,扩展Caddy的功能,满足自己的需求。

在Caddy中,编写插件是非常容易的事情,这得益于Caddy模块化的架构。其实我们用到的很多指令功能,都是Caddy基于插件实现,这些官方实现的插件,称之为标准插件。

在Caddy中,是没有插件这个概念的,Caddy称之为模块,其实和插件是一样的,而我们对插件也更容易理解,所以我会沿用插件这个概念。

xcaddy

要开发Caddy插件,xcaddy是必不可少的利器,通过它你可以把自己想用的插件编译进Caddy中,生成你专属的Caddy二进制文件,这样这个Caddy二进制文件就包含了你想用的插件。是不是很方便?它提供了让你定制Caddy二进制文件的能力,是否需要额外的插件完全取决于你。

在使用xcaddy之前,你得先安装它,你可以从 https://github.com/caddyserver/xcaddy/releases 下载在二进制文件,也可以可以通过源代码安装它,因为它是开源的。

$ go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest

实现一个插件

要想开发一个插件,那么这个插件必须要实现 caddy.Module 接口,这个接口非常简单,只有一个 CaddyModule 方法:

type Module interface {
   CaddyModule() ModuleInfo
}

现在我们来开发我们自己的插件HelloWorld,首先先定义一个结构体实现caddy.Module 接口 。

type HelloWorld struct {
}
func (h HelloWorld) CaddyModule() caddy.ModuleInfo {
   return caddy.ModuleInfo{
      ID:  "http.handlers.hello_world",
      New: func() caddy.Module { return new(HelloWorld) },
   }
}

从以上代码可以看到,我们返回的 caddy.ModuleInfo 包含两个字段:

  1. ID 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值