版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第Go语言restyhttp包调用jenkinsapi实例目录前言Resty特色演示例子简单get请求增强get请求灵活post请求多文件上传文件下载实战例子构造一个jenkins客户端获取jenkinsjob信息无参构建job查看构建日志job开关(启用禁用job)小结
前言
在前两篇文章中都使用HttpRequest这个http包来做api的请求
然后github上面还有一个更有名,星星更多,社区也更活跃的http包Resty
最近11月3号又发布了一个新版本,项目参与者多达75个,标星有5.2k
Resty特色
支持GET,POST,PUT,DELETE,HEAD,PATCH,OPTIONS等方法设置和请求的方法简单请求体支持多种数据类型(string,[]byte,struct,map,slice,io.Reader)返回支持[]byte和string对json和xml内容自动编码和解码支持上传一个多个文件和下载指定路径或打包请求参数支持QueryParams,QueryString,FormData支持重试,代理,证书支持简单认证和认证token
Resty官网:/go-resty/resty
演示例子
演示部分例子get,post等例子,其它put,delete,patch都差不多
简单get请求
该示例显示请求状态和响应耗时
funcsimpleGet(){
client:=resty.New()
resp,_:=client.R().EnableTrace().Get("/get")
fmt.Println("状态码:",resp.StatusCode())
fmt.Println("总耗时:",resp.Time())
增强get请求
该示例支持map类型和路径参数,支持设置请求头和认证token
funcenhancedGet(){
client:=resty.New()
resp,_:=client.R().
SetQueryParams(map[string]string{
"page_no":"1",
"limit":"20",
"sort":"name",
"order":"asc",
"random":strconv.FormatInt(time.Now().Unix(),10),
//SetQueryString("productId=232amp;template=fresh-sampleamp;cat=restyamp;source=googleamp;kw=buyalotmore").
SetHeader("Accept","application/json").
SetAuthToken("xxxxxxxxxxxxxxxxxxxxxxx").
Get("/search_result")
fmt.Println(resp)
灵活post请求
该示例支持设置body内容为map支持简单认证和token认证
funcvariousPost(){
client:=resty.New()
resp,err:=client.R().
SetBody(map[string]interface{}{"username":"testuser","password":"testpass"}).
SetAuthToken("your-auth-token").
Post("/login")
fmt.Println(resp,err)
多文件上传
该示例支持多文件上传,支持定义本地文件路径,支持设置FormData数据
funcmultipartFileUpload(){
profileImgBytes,_:=ioutil.ReadFile("/Users/jeeva/test-img.png")
notesBytes,_:=ioutil.ReadFile("/Users/jeeva/text-file.txt")
client:=resty.New()
resp,_:=client.R().
SetFileReader("profile_img","test-img.png",bytes.NewReader(profileImgBytes)).
SetFileReader("notes","text-file.txt",bytes.NewReader(notesBytes)).
SetFormData(map[string]string{
"first_name":"dddd",
"last_name":"cccc",
Post("/upload")
fmt.Println(resp)
文件下载
定义下载保存路径,直接下载
funcdownFile(){
client:=resty.New()
_,_=client.R().
SetOutput("plugin/test-v5.1-beta.zip").
Get("http://my.app/test")
实战例子
通过上面的演示例子,可以看到resty这个包功能非常强大
接下来我们使用该包来封装jenkinsapi,来进行二次开发
构造一个jenkins客户端
编写一个方法创建jenkins客户端,后续所有动作只需调用既可
该客户端集成了重试,json头,以及简单认证
funcjenkinsClient()*resty.Request{
c:=resty.New()
a:=c.SetRetryCount(3).SetRetryWaitTime(5*time.Second).
SetRetryMaxWaitTime(20*time.Second).
R().SetHeader("Accept","application/json").
SetBasicAuth("username","password")
returna
var(
url="http://ip:port"
获取jenkinsjob信息
创建好jobinfo的结构体,方便接下来的数据接收
typeJobInfostruct{
DisplayNamestring
FullNamestring
Buildablebool
NextBuildNumberint
InQueuebool
Colorstring//blue成功red失败
Urlstring
resty会将返回数据解码,只需要提供结构体接收
funcjenkinsJobInfo(jobstring){
a:=jenkinsClient()
jobInfo:=amp;JobInfo{}
resp,err:=a.SetResult(jobInfo).Get(url+"/job/"+job+"/api/json")
iferr!=nil{
fmt.Println(err)
fmt.Println("resp\n",resp.StatusCode(),resp.Time())
fmt.Println(jobInfo.Color)
无参构建job
简单post请求,调用无参数构建
funcjenkinsJobBuild(jobstring){
a:=jenkinsClient()
resp,_:=a.Post(url+"/job/"+job+"/build")
ifresp.StatusCode()==201{
fmt.Println("build成功")
查看构建日志
查看日志,需要先获取job的最后一次的buildID
所以这里发请2次请求,第1次获取buildID,第2次获取日志内容
funcjenkinsJobLog(jobstring){
a:=jenkinsClient()
resp,_:=a.Get(url+"/job/"+job+"/lastBuild/buildNumber")
ifresp.StatusCode()==200{
lastBuild:=resp.String()
resp2,_:=a.Get(url+"/job/"+job+"/"+lastBuild+"/logText/progressiveText")
fmt.Println(resp2.String())
job开关(启用禁用job)
第一个参数为job名称,第二个参数设定开关值
funcjenkinsJobSwich(jobstring,swibool){
a:=jenkinsClient()
ifswi{
resp,_:=a.Post(url+"/job/"+job+"/enable")
fmt.Println(resp.Status())
}else{
resp,_:=a.Post(url+"/job/"+job+"/disabl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- BIM实施方案资料
- 市场扩张计划策略书模板与实施方案
- 企业品牌宣传与推广标准化手册
- 供应链管理优化策略与工具包
- 技术支持响应快速流程与知识库工具
- 吉林省前郭县联考2026届初三下学期教育质量调研(二模)英语试题含解析
- 江苏省泰州市泰兴市西城达标名校2026年初三一模试题(语文试题文)试题含解析
- 行业诚信领域活动启动承诺书(6篇)
- 居民区绿化管理保证承诺书6篇
- 2026年建筑工地消防安全专项方案编制指南
- 阳泉煤业集团兴峪煤业有限责任公司煤炭资源开发利用和矿山环境保护与土地复垦方案
- 周三多《管理学》笔记整理
- 首件确认制度
- 安徽绿沃循环能源科技有限公司12000t-a锂离子电池高值资源化回收利用项目(重新报批)环境影响报告书
- 幼儿园施工单位竣工验收自评报告
- 东方汽轮机高低旁液压油站使用说明书
- 高等学校辅导员管理规定
- 全国民用建筑工程设计技术措施 结构
- 高二心理健康教教育课完整版
- 劳动争议仲裁申诉登记表格式
- LED灯具规格书中英文
评论
0/150
提交评论