-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
重构SDK代码 #3
base: develop
Are you sure you want to change the base?
重构SDK代码 #3
Conversation
感谢贡献的pull! 有3个问题: 基于上面的分析,暂时无法合并到分支。如果上面这些问题能解决的话,我们考虑合并到分支,或者把你的sdk链接放在我们的官方第三方sdk库列表里。 |
func (c *Client) handleResponse(resp *http.Response, out interface{}) error {
if resp.StatusCode >= http.StatusBadRequest {
var err ErrorResponse
if e := c.decodeJSONBody(resp, &err); e != nil {
return e
}
return err
}
return c.decodeJSONBody(resp, out)
} 其中, // ErrorResponse is the return format when the response fails
type ErrorResponse struct {
HTTPStatusCode int `json:"http_status_code"`
Code int `json:"code"`
Message string `json:"msg"`
Detail string `json:"detail"`
}
func (resp ErrorResponse) Error() string {
return fmt.Sprintf("请求失败,StatusCode: %d, Code: %d, Message: %s, Detail: %s", resp.HTTPStatusCode, resp.Code, resp.Message, resp.Detail)
} 在SDK中将4xx返回也是当作错误进行处理。
|
回答一下你的问题: 我们对SDK的基本要求如下: 感谢你的改进,可以考虑把你的sdk作为我们的第三方sdk库,供用户选择 |
关于第二个问题,我们还是认为目前来说统一的返回值格式不是一个好的设计,当然如果你的意思只是要求所有的返回值中必须有一个code字段,那么我可以处理,但是如果要求改成像你们sdk里那样统一返回Result结构体,那么我们不会这样实现。因为实际上你的接口返回值并没有统一,即使将来统一了,再修改sdk也可以。但是现在强行在客户端统一会对用户使用造成不变。比如,如果目前要实现统一的返回值,那么你Result结构体中的Data字段就必须定义为 如果你执意要求按照统一的Result返回值格式定义,那么请关闭该PR,我们将自行使用我们自己开发的SDK,如果你可以接受我们的建议,那么我再继续实现V1接口并完善单元测试,谢谢 |
@Jamesxql 现有sdk的设计,是目前能较好兼容现在和将来的API结构的设计,暂时看不需要改变。 |
@Jamesxql |
@dzh V1 接口已经实现,我们仓库的链接地址: https://github.com/FeiniuBus/yunpian-go-sdk/tree/master/yunpian |
@Jamesxql 链接已加到README的“开源SDK列表” |
新的SDK代码在
yunpian
文件夹下,请评审。新接口的调用方式,以发送单个SMS短信为例:
目前只实现了V2接口,如果需要实现V1接口,请自行实现。
由于我没有测试API KEY,因此测试用例不是很齐全,如果需要请自行补齐。