go-restful 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
go-restful 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
go-restful 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache-2.0
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 Fake瑞克
适用人群 未知
收录时间 2019-12-27

软件简介

go-restful 是一个 Golang 开发的 RESTful 框架。

go-restful标准化了Restful接口开发,提供了post delete put get四种操作方式。

./cmd目录下session.go实现了一个标准的Restful处理者,可参考使用。

框架提供了标准的返回数据:当status为0时代表操作成功,并且可在body中获取返回数据。

在handler中设置成功状态:

resp.Success(map[string]interface{} {
    "uid":   uid,
    "token": token,
})

客户端接收到的数据为:

{"status": 0, "error_code": 0, "error_msg": null, "body": {"token": "xxxxxxxx", "uid": "10001"}}

框架提供了多语言的错误信息,可通过配置的形式注册错误信息:

restful.HandlerOpts{
    // 配置接口错误信息
    MakeErrorFunc: func(err *restful.Errors){
        err.NewError(1000, "email or passwd error")
        err.Translate(1000, "cn", "邮箱或密码错误") // 中文翻译
    },
},

客户端接收到的数据为:

{"status": -1, "error_code": 1000, "error_msg": {"cn": "邮箱或密码错误", "en": "email or passwd error"}, "body": null}

框架可自定义请求解析器,默认提供了json格式解析在./parser/json-parser.go中。

框架支持过滤器队列,对请求数据进行预处理,在目录./filters目录下默认提供了两个过滤器。

check.go : 负责参数格式校验,支持string,float64,int64,bool,[]interface{},正则表达式校验。

token.go : 用来校验访问令牌信息。(需结合缓存和数据库进行修改)。

将过滤器用于处理者:只要有任何一个过滤器error != nil,之后的过滤器将不会被执行,请求将被丢弃。

restful.HandlerOpts{
    Filters: []restful.Filter{
        // 1、该接口需要验证token,如果token无效将不被执行
        &filter.CheckToken{},
        // 2、校验参数
        &filter.CheckParams{
            // 参数检查
            Params: map[string]interface{}{
                // 正则校验
                "email": filter.FieldRegexp(`^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$`),
                // 6~12长度字符串校验
                "passwd": filter.FieldString().SetLength(6, 12),
            },
        },
    },
},
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
0 评论
4 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部