github.com/fastwego/offiaccount@v1.0.1/doc/api.md (about) 1 ## API 使用 2 3 微信公众号提供的接口多达近 300 个,但无非就是两大类: 4 5 - GET 请求:拉取数据,例如数据统计、用户列表等 6 - POST 请求:操作数据或配置,例如设置公众号菜单、用户管理、卡券管理等 7 8 每个接口的需要的参数和返回的响应格式都不一样,如果过分关注细节,那么不得不定义种类繁杂的 `struct` 类型来表示这些参数或响应 9 10 这会让开发者崩溃 ;( 11 12 ### 统一参数抽象 13 14 为了保持简洁和灵活性,框架将接口参数统一定义为: 15 - `payload []byte` 用于 `POST` 类请求 16 - `params url.Values` 用于 `GET` 类请求 17 18 例如,设置菜单: 19 ```go 20 payload := []byte(` 21 { 22 "button":[ 23 { 24 "name":"菜单", 25 "sub_button":[ 26 { 27 "type":"view", 28 "name":"搜索", 29 "url":"http://www.soso.com/" 30 }] 31 }] 32 }`) 33 resp, err := menu.Create(ctx, payload) 34 ``` 35 36 获取用户信息: 37 ```go 38 params := url.Values{} 39 params.Add("openid", "useropenid") 40 params.Add("lang","zh_CN") 41 42 resp, err := user.GetUserInfo(App, params) 43 ``` 44 45 ### 统一响应抽象 46 47 同样地,接口响应的 json 字符串都用 `resp []byte` 来表示 48 49 开发者可以根据具体的业务来决定是否要解析 json 为 `struct` 类型 50 51 52 ### 文件上传 53 54 还有一类特殊的接口,需要上传文件,例如:素材管理、客服头像设置等 55 56 这类接口,框架会提供额外的文件路径参数 57 58 例如,上传图片素材: 59 ```go 60 media := "/path/to/image/file.jpg" 61 62 resp, err := material.MediaUploadImg(ctx, media) 63 ``` 64 65 ### API 列表 66 67 {{#include ./apilist.md}}