http REST API 验证库

toukii 发表了文章 • 0 个评论 • 58 次浏览 • 22 小时前 • 来自相关话题

httpvf

http REST API verify,验证REST API 是否正确,书写脚本。必要时运行脚本,查看是否全部通过验证。

安装

查看全部
					

httpvf


http REST API verify,验证REST API 是否正确,书写脚本。必要时运行脚本,查看是否全部通过验证。


安装


go get github.com/toukii/httpvf/vf

示例


vf.yml:


-
url: http://upload.daoapp.io/topic
method: POST
header:
Content-Type: "application/x-www-form-urlencoded"
body: "title=topic001&content=content001"
resp:
code: 200
cost: 900
-
url: http://upload.daoapp.io/loadfile/topic001
method: GET
resp:
code: 200
cost: 80
body: content001
-
url: http://localhost:8080/uploadform/
method: POST
filename : vf.yml
resp:
code: 200
cost: 10

验证:


vf -v vf.yml

请求




  • url: [请求地址]




  • method: [请求方法]




  • body: [请求body]




  • n: [请求个数]




  • interval: [请求间隔]




  • runtine: [请求并发数]




  • upload: [web前段传入的文件名(input name)]@[上传文件名]



  • header: 请求的header参数,map结构


header:
Content-Type: "application/x-www-form-urlencoded"


  • param: GET 请求的参数,map结构


param:
name: toukii
position: dev-ops

验证返回body




  • code: [响应码]




  • cost: [响应时间,单位ms]




  • body: [直接验证内容]



  • regex: [正则表达式]


json




  • 路径以","分割




  • 路径若有纯数字,为数字加上""




  • 数组下标从0开始,直接写数字


    例如,返回的json内容如下:




[
{
"Map": {
"1": "hello"
},
"Message": "This is toukii,r1",
"Cost": 0.315
}
]

验证hello的写法为:


json: 
'0,Map,"1"': hello

处理文件上传的工具包 - fuh

lyric 发表了文章 • 0 个评论 • 74 次浏览 • 2 天前 • 来自相关话题

处理文件上传的工具包 - fuh

在平时web开发过程中,总会遇到处理文件上传的场景,每次的处理方式都是以业务为导向进行处理。现在作者就把这一... 查看全部

处理文件上传的工具包 - fuh


在平时web开发过程中,总会遇到处理文件上传的场景,每次的处理方式都是以业务为导向进行处理。现在作者就把这一块单独抽离出来,做成了一个简单的工具包。主要特点是:



  • 支持自定义文件存储

  • 支持自定义文件名

  • 支持自定义文件大小限制


引入简单,方便,欢迎来拍砖!谢谢!


$ go get github.com/LyricTian/fuh

package main

import (
"encoding/json"
"net/http"

"github.com/LyricTian/fuh"
)

func main() {
http.HandleFunc("/fileupload", func(w http.ResponseWriter, r *http.Request) {
finfo, err := fuh.Upload(r, "file", nil, nil)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
return
}
json.NewEncoder(w).Encode(finfo)
})

http.ListenAndServe(":8080", nil)
}

撸了一个Golang的包管理/自动化构建工具,欢迎大家拍砖

blindpirate 发表了文章 • 3 个评论 • 192 次浏览 • 2017-02-12 21:45 • 来自相关话题

最近撸了一个Gradle插件,用来对Golang进行包管理和自动化构建。项目在这里。Feature有:

最近撸了一个Gradle插件,用来对Golang进行包管理和自动化构建。项目在这里。Feature有:



  • JDK 8+外无需预先安装任何东西(包括Go本身)

  • 支持所有版本的Go且允许多版本共存

  • 完美支持几乎所有平台(只要能够运行Java,本项目的所有测试在OS X 10.11/Ubuntu 12.04/Windows 7上通过)

  • 项目级的依赖隔离,无需设置GOPATH

  • 完善的包管理

    • 无需手工安装依赖包,只需指定版本

    • 无需安装即可支持Go语言默认支持的四种版本控制工具:Git/Svn/Mercurial/Bazzar (当前只实现了Git)

    • 支持传递性依赖

    • 支持自定义传递性依赖策略

    • 自动解决冲突

    • 支持依赖锁定

    • 支持glide/glock/godep/gom/gopm/govendor/gvt/gbvendor/trash等外部依赖的导入(基于这份报告

    • 支持语义化版本

    • 支持vendor

    • 支持依赖的扁平化 (受glide启发)

    • 支持本地包重命名

    • 支持私有仓库

    • 构建、测试依赖分别管理

    • 支持依赖树可视化


  • 支持构建、测试、单个/通配符测试、交叉编译

  • 现代的、生产级别的自动化构建支持,添加自定义任务极其简单

  • 原生的Gradle语法

  • 额外为中国大陆开发者提供的特性,你懂的

  • Shadowsocks支持

  • 增量构建(开发中)

  • IDE插件支持(规划中)


欢迎大家拍砖!

dockerSSH用ssh连接到docker

myml 发表了文章 • 3 个评论 • 91 次浏览 • 2017-02-11 21:59 • 来自相关话题

dockerSSH

用golang.org/x/crypto/ssh 实现的ssh服务器,能直接让你通过ss... 查看全部

dockerSSH


用golang.org/x/crypto/ssh 实现的ssh服务器,能直接让你通过ssh登陆到docker容器内,比如ssh ff756b3ea527@127.0.0.1 会登陆到ID为ff756b3ea527的容器,刚实现的尚不成熟,还有一些功能想去实现,比如scp,sftp

wechat web协议

songtianyi 发表了文章 • 2 个评论 • 216 次浏览 • 2017-01-24 11:32 • 来自相关话题

sql转es dsl的小工具

caibirdme 回复了问题 • 4 人关注 • 2 个回复 • 385 次浏览 • 2017-01-24 11:00 • 来自相关话题

Automaticly provide RESTful API for gRPC

lcp0578 回复了问题 • 3 人关注 • 2 个回复 • 281 次浏览 • 2017-01-22 09:55 • 来自相关话题

gmcache一个用go写的分布式缓存,类似memcached

stirlingx 发表了文章 • 0 个评论 • 220 次浏览 • 2017-01-19 16:01 • 来自相关话题

主要是用来练手的,欢迎大家仍砖头

  • 使用ectd做服务发现
  • broker作为代理服务器,对client的请求做转发,用一致性hash算法对key映射到后端gmcache。

项目地... 查看全部

主要是用来练手的,欢迎大家仍砖头



  • 使用ectd做服务发现

  • broker作为代理服务器,对client的请求做转发,用一致性hash算法对key映射到后端gmcache。


项目地址:


https://github.com/liyue201/gmcache


Gmcache


A distributed key/value memory cache written in go.


Features



  • Light weight

  • Pure golang

  • Supports set,get and delete

  • Supports grpc and http protocols

  • Scalable architecture


Architecture


gmcache-cluster

beegoapix - beego api extension

luffyke 发表了文章 • 0 个评论 • 160 次浏览 • 2017-01-18 15:43 • 来自相关话题

简介

beegoapix是一个beego API开发框架,用于快速开发API服务。

安装

go get github.com/lu... 			查看全部
					

简介


beegoapix是一个beego API开发框架,用于快速开发API服务。


安装


go get github.com/luffyke/beegoapix

功能



  1. 统一API请求处理和返回(v0.1)

  2. 统一日志处理(v0.1)

  3. 异常控制(v0.1)

  4. API版本控制(v0.2)

  5. API权限控制(v0.2)

  6. 组合接口

  7. 接口缓存

  8. 自定义请求


示例


首先确保安装beego和bee工具。


新建Api项目


bee api hello

编辑router.go,添加api路由


package routers

import (
"hello/controllers"
"github.com/luffyke/beegoapix"
)

func init() {
beegoapix.Router()
// add your business path mapping
beegoapix.RegController("app", controllers.AppController{})
}

实现业务controller


package controllers

import (
"github.com/luffyke/beegoapix/api"

"github.com/astaxie/beego/logs"
)

type AppController struct {
}

func (this *AppController) CheckVersion(request api.ApiRequest) (response api.ApiResponse) {
logs.Debug(request.Id)
logs.Debug(request.Data["versionCode"])
response.Data = make(map[string]interface{})
response.Data["versionName"] = "version name 1.0"
return response
}

运行服务


bee run

测试请求


http://localhost:8080/v1/app/check-version

请求示例


{
"id":"12345678",
"sign":"abc",
"client":{
"caller":"app",
"os":"android",
"ver":"1.0",
"platform":"android",
"ch":"offical",
"ex":{
"imei":"1a2b3c"
}
},
"page":{
"page":1,
"size":10
},
"user":{
"uid":"123",
"sid":"abc"
},
"data":{
"versionCode":"v1.0.0"
}
}

返回

{
"state": {
"code": 0,
"msg": ""
},
"data": {
"versionName": "version name 1.0"
}
}

Android 示例


参考项目 beegoapix-android-demo

力争做最好的go模板引擎

Lime 发表了文章 • 3 个评论 • 382 次浏览 • 2017-01-17 13:01 • 来自相关话题

一直觉得 go 没有一个好用的模板引擎,渲染 html 的时候特别痛苦,总有一种有力气却使不出来的感觉。

模板引擎一般有两种实现方式,一种是解析 html 语法树,然后根据一定的规则动态的拼接,另外一种是把模板预先生成代码,渲染模板时调用相... 查看全部

一直觉得 go 没有一个好用的模板引擎,渲染 html 的时候特别痛苦,总有一种有力气却使不出来的感觉。


模板引擎一般有两种实现方式,一种是解析 html 语法树,然后根据一定的规则动态的拼接,另外一种是把模板预先生成代码,渲染模板时调用相关的函数即可。


Go 内置的 template 包使用的是第一种方式,不过很多开源项目使用的是第二种方式,比如 quicktemplate 、 gorazor 等。不过这两个可能由于设计的问题,都没有实现模板继承和模板 include ,而且有的语法个人觉得不是太优雅。


所以我想要一个 go 模板,它具备以下特性:


原生的 golang 语法



  • 支持模板植入代码

  • 支持模板继承和 include

  • 高性能

  • 语法简单、优雅

  • 自动编译


基于以上,实现了 hero 模板引擎,用过 nodejs EJS 模板引擎的童鞋应该很容易上手。 hero 目前已经在 http://bthub.io 线上使用。


Github: https://github.com/shiyanhui/hero


Gophers ,欢迎 issues 和 pr ,让我们一起共同打造 golang 最好的模板引擎!

supervisor的client api

foolbread 发表了文章 • 4 个评论 • 149 次浏览 • 2017-01-17 12:03 • 来自相关话题

最近项目需要,自己利用supervisor提供的接口,封装了一个golang的client api

项目地址:https://githu...

go-workerpool 支持每分钟百万并发的抽象原型

qianguozheng 发表了文章 • 0 个评论 • 188 次浏览 • 2017-01-14 23:15 • 来自相关话题

使用 Golang 实现了一个简单的消费者模式, 主要解决每分钟百万请求的问题。

基本原理:建立固定的工作线程去缓冲池中取数据处理。以此来控制固定时间内处理的请求数

源码地址

查看全部

使用 Golang 实现了一个简单的消费者模式, 主要解决每分钟百万请求的问题。


基本原理:建立固定的工作线程去缓冲池中取数据处理。以此来控制固定时间内处理的请求数


源码地址


https://github.com/qianguozheng/go-workerpool.git


用途



  1. 控制goroutine的数目

  2. 简练模型


实际使用场景及灵感来源


http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/

Grumpy:Google开源神器 Go上运行Python

wwdyy 发表了文章 • 0 个评论 • 381 次浏览 • 2017-01-07 13:46 • 来自相关话题

Grumpy是一个Python to Go的源码源代码翻译编译器和运行时,旨在取代CPython 2.7。

关键区别在于,Grumpy是将Python源码编译为Go源代码,然后将其编译为本地代码,而不是字节码。这也就意味着Grumpy没... 查看全部

Grumpy是一个Python to Go的源码源代码翻译编译器和运行时,旨在取代CPython 2.7。


关键区别在于,Grumpy是将Python源码编译为Go源代码,然后将其编译为本地代码,而不是字节码。这也就意味着Grumpy没有虚拟机(VM)。编译好的Go源码是对Grumpy运行时的一系列调用,一个Go库服务于具有相似目的的Python C API(尽管不直接支持C API)。


运行Grumpy程序


方法1:grumprun:


执行Grumpy程序的最简单方法就是使用make run,它封装了一个名为grumprun的shell脚本,它将stdin上的Python代码基于Grumpy构建和运行。以下所有的命令都假设从Grumpy源码根目录开始运行:


echo "print 'hello, world'" | make run

方法2:grumpc


对于复杂一些的程序,你需要使用grumpc把Python代码编译成Go源码以后再进行构建。首先,写一个简单的.py脚本;


echo 'print "hello, world"' > hello.py

接下来,创建工具链并导出一些使工具链工作的环境变量:


 make

export GOPATH=$PWD/build

export PYTHONPATH=$PWD/build/lib/python2.7/site-packages

最后,编译Python脚本并从中构建一个二进制文件:


tools/grumpc hello.py > hello.go

go build -o hello hello.go

好了,现在执行./hello二进制到你的核心内容里即可。


关于Grumpy更多内容,大家可以访问其源码托管地址:https://github.com/google/grumpy

Thinkgo web框架,自动绑定参数,支持在线API文档

changjixiong 回复了问题 • 4 人关注 • 1 个回复 • 309 次浏览 • 2017-01-06 19:03 • 来自相关话题

分享一个自己写的微信terminal版本终端,初步的功能完成

liushuchun 发表了文章 • 6 个评论 • 387 次浏览 • 2017-01-06 14:13 • 来自相关话题

链接地址:https://github.com/liushuchun/wechatcmd golang新手,代码还有很多不规范的地方,希望多帮忙s... 查看全部

链接地址:https://github.com/liushuchun/wechatcmd
golang新手,代码还有很多不规范的地方,希望多帮忙star,让我更有动力继续完善。
效果图
聊天动态图