前言
現(xiàn)如今短信服務(wù)基本已經(jīng)成為每個(gè)產(chǎn)品的標(biāo)配巫橄,短信驗(yàn)證碼淘邻、通知短信等等。阿里大魚(yú)(也稱阿里大于湘换,下統(tǒng)稱為阿里大魚(yú))在國(guó)內(nèi)算是比較好的短信服務(wù)平臺(tái)了宾舅,作為阿里出品自然為開(kāi)發(fā)者們提供了許多語(yǔ)言的SDK敬尺,但其中并不包括Golang,這也是alidayu-go產(chǎn)生的原因贴浙。 在使用alidayu-go的時(shí)候不能脫離官方文檔砂吞,因?yàn)槲覀兘?jīng)常需要查詢字段信息,傳送門 => 阿里大魚(yú)
安裝崎溃、使用
安裝蜻直、使用可以直接看Github上的README,很詳細(xì)袁串,這里就不贅述了概而。寫這篇博客主要是想講一下alidayu-go的擴(kuò)展。
Github地址: https://github.com/gwpp/alidayu-go
擴(kuò)展
這個(gè)SDK的關(guān)鍵點(diǎn)不是實(shí)現(xiàn)了阿里大魚(yú)的3個(gè)API囱修,而是給使用者提供了一個(gè)可以自有擴(kuò)展的框架赎瑰,以【短信發(fā)送記錄查詢】接口為例。
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
}
這幾十行代碼幾乎就是【短信發(fā)送記錄查詢】的全部了破镰,可以發(fā)現(xiàn)非常簡(jiǎn)單餐曼。
- 首先定義一個(gè)XXXRequest 結(jié)構(gòu)體,在官方文檔上找到對(duì)應(yīng)接口說(shuō)明鲜漩,把接口請(qǐng)求參數(shù)作為XXXRequest的屬性源譬,并設(shè)置json tag。
- 實(shí)現(xiàn) AlibabaRequest interface的兩個(gè)方法孕似,便于TopClient獲取該接口的method和校驗(yàn)參數(shù)合法性
- 調(diào)用:
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 ...
- 然后踩娘。。喉祭。养渴。。泛烙。理卑。。胶惰。然后就沒(méi)有然后了傻工,就這樣,你就實(shí)現(xiàn)了一個(gè)XXXRequest
寫在最后
筆者水平有限孵滞,如果大家發(fā)現(xiàn)了什么BUG中捆,歡迎Github Issue我,或者直接下方評(píng)論坊饶,相互學(xué)習(xí)泄伪,共同進(jìn)步。