GolangGo语言

阿里大鱼Golang SDK —— alidayu-go

2017-07-05  本文已影响683人  gwpp

前言


现如今短信服务基本已经成为每个产品的标配,短信验证码、通知短信等等。阿里大鱼(也称阿里大于,下统称为阿里大鱼)在国内算是比较好的短信服务平台了,作为阿里出品自然为开发者们提供了许多语言的SDK,但其中并不包括Golang,这也是alidayu-go产生的原因。 在使用alidayu-go的时候不能脱离官方文档,因为我们经常需要查询字段信息,传送门 => 阿里大鱼

安装、使用


安装、使用可以直接看Github上的README,很详细,这里就不赘述了。写这篇博客主要是想讲一下alidayu-go的扩展。

Github地址: https://github.com/gwpp/alidayu-go

扩展


这个SDK的关键点不是实现了阿里大鱼的3个API,而是给使用者提供了一个可以自有扩展的框架,以【短信发送记录查询】接口为例。

type AlibabaAliqinFcSmsNumQueryRequest struct {
    BizId       string `json:"biz_id"`
    RecNum      string `json:"rec_num"`
    QueryDate   string `json:"query_date"`
    CurrentPage string `json:"current_page"`
    PageSize    string `json:"page_size"`
}

func NewAlibabaAliqinFcSmsNumQueryRequest() *AlibabaAliqinFcSmsNumQueryRequest {
    return new(AlibabaAliqinFcSmsNumQueryRequest)
}

func (req *AlibabaAliqinFcSmsNumQueryRequest) GetMethodName() string {
    return "alibaba.aliqin.fc.sms.num.query"
}

func (req *AlibabaAliqinFcSmsNumQueryRequest) ParamsIsValid() error {
    if len(req.RecNum) == 0 {
        return errors.New("rec_num is required")
    }
    if len(req.QueryDate) == 0 {
        return errors.New("query_date is required")
    }
    if len(req.CurrentPage) == 0 {
        return errors.New("current_page is required")
    }
    if len(req.PageSize) == 0 {
        return errors.New("page_size is required")
    }

    return nil
}

这几十行代码几乎就是【短信发送记录查询】的全部了,可以发现非常简单。

client := NewTopClient(APP_KEY, APP_SECRET)
req := NewXXXRequest()
req.aaa = "aaa"
req.bbb = "bbb"
response, err := client.Execute(req)
if err != nil {
    // code here ...
    return
}
// code here ...

写在最后


笔者水平有限,如果大家发现了什么BUG,欢迎Github Issue我,或者直接下方评论,相互学习,共同进步。

上一篇 下一篇

猜你喜欢

热点阅读