句子互動技術團隊針對企業微信開發文檔做了基于 的翻譯工作,使得開發者可以使用命令一鍵生成對應編程語言的代碼,零成本對接企業微信的 API。 為什么會有這個項目
企業微信開放了大量的API 接口,使得企業和服務商可以自定義開發配套應用提高企業微信的使用效率。但繁多的 API 和參數配置,使得開發者的使用成本很高,尤其當需要實現多種編程語言的版本時。
句子互動技術團隊基于 ,對企業微信開發文檔做了翻譯工作,使得開發者可以使用命令直接生成對應編程語言的代碼,零成本對接企業微信的 API。
關于
(OAS)定義了一個標準的、語言無關的 API 接口規范,它可以同時允許開發人員和計算機查看并理解某個服務的功能,而無需訪問源代碼、文檔或網絡流量檢查,既方便人類學習和閱讀,也方便機器閱讀。正確定義 OAS 后,開發者可以使用最少的實現邏輯來理解遠程服務并與之交互。
此外,文檔生成工具可以使用 規范來生成 API 文檔,代碼生成工具可以生成各種編程語言下的服務端和客戶端代碼,測試代碼和其他用例。詳見:
WeCom- 項目
句子互動技術團隊基于 AOS 對企業微信開發文檔做了翻譯,并上線了 Wecom- 項目。WeCom- 是利用 的 集成能力來實現的,@/ 提供了一些里的裝飾器()來聲明 屬性,方便管理 API 之間的關聯關系。
如何使用
Wecom- 項目已在 ( ) 完全開源。
把代碼克隆下來,安裝依賴后啟動項目。啟動后會在根目錄生成 spec 文件 .yaml微信源碼本地測試,在瀏覽器打開 :3000/ 可查看 UI。
$ git clone git@github.com:juzibot/wecom-openapi.git
$ cd wecom-opwenapi && npm install

$ npm run start
WeCom- 提供了對企業微信 API 的代理轉發,所以你可以在 UI 上直接對 API 進行調試。首先將你的 配置好。
然后選擇本地代理地址即可,這樣就不會出現跨域的問題。
代碼生成
主流的代碼生成工具是 -,但是它生成的 代碼不太友好,所以這里推薦使用 go- 項目,但是目前只支持 2.0 版本,所以需要將上面得到的 .yaml 文件轉換成一下版本。這里使用 api-spec- 來做版本轉換。
$ npm install -g api-spec-converter
# 轉換文檔版本
$ api-spec-converter --from=openapi_3 --to=swagger_2 \
--syntax=yaml \
--order=alpha \
./openapi.yaml > swagger.yaml

# 安裝 go-swaager
$ brew install go-swagger
$ mkdir wecom-api
# 生成 golang 代碼,要求目標目錄必須在 GO_PATH 中
$ cd wecom-api && go mod init wecom-api
# 生成 golang 代碼
$ swagger generate client -f swagger.yaml -t wecom-api
至此,在 wecom-api 目錄中會得到生成的代碼文件
./wecom-api/
├── client

└── models
package main
import (
"log"
"wecom-api/client"
"wecom-api/client/department"
"github.com/go-openapi/runtime"
"github.com/go-openapi/strfmt"
)
// 定義鑒權對象

type auth struct{}
var token = "token"
// 實現 ClientAuthInfoWriter 接口
func (a *auth) AuthenticateRequest(req runtime.ClientRequest, reg strfmt.Registry) error {
// 將 token 放在正確的位置
return req.SetQueryParam("access_token", token)
}
func main() {
departmentID := float64(1)
params := department.NewListDepartmentParams()
params.SetID(&departmentID)

resp, err := client.Default.Department.ListDepartment(params, &auth{})
if err != nil {
log.Fatalf("err: %v", err)
}
log.Printf("%v, %s", resp.Payload.Errcode, resp.Payload.Errmsg)
for _, v := range resp.Payload.Department {
log.Printf("%v", v)
}
}
更多 Wecom-
我們已經將此項目部署在了句子互動官網,你可以復制地址 在瀏覽器打開直接使用。
句子互動技術團隊已經完成了常用接口文檔的翻譯工作微信源碼本地測試,但仍有許多接口的翻譯工作等待被完成,如果你有興趣和精力參與共建,我們非常歡迎你的加入。
你可以直接在 中提交 PR,也可以通過句子互動官網客服聯系我們