av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

IDEA中的HTTP Client使用教程

瀏覽:121日期:2024-07-22 15:14:11
介紹

IDEA RESTful WebServices是一個(gè)類似jmeter,postman的工具。可以使用純文本編輯。

官網(wǎng)介紹地址:https://www.jetbrains.com/help/idea/restful-webservices.html

該工具是idea的一個(gè)組件,在Tools->Http client下;當(dāng)然goland也是相同;低版本是Test Restful WebService,新版本的idea已經(jīng)提示改功能廢棄,建議使用new HTTP Client也就是我們此教程要介紹的工具;

示例:

創(chuàng)建demo1.http文件

GET https://www.baidu.com

###

點(diǎn)擊右側(cè)運(yùn)行即可查看到結(jié)果

HTTP請(qǐng)求中使用變量

要在請(qǐng)求中提供變量,請(qǐng)將其括在雙花括號(hào)中,如 {{variable}} 。變量名稱只能包含字母,數(shù)字,下 劃線符號(hào) _ 或連字符 - 。

預(yù)定義的動(dòng)態(tài)變量

每次您運(yùn)行請(qǐng)求時(shí),動(dòng)態(tài)變量都會(huì)生成一個(gè)值: $uuid :生成通用的唯一標(biāo)識(shí)符(UUID-v4) $timestamp :生成當(dāng)前的UNIX時(shí)間戳 $randomInt :生成介于0到1000之間的隨機(jī)整數(shù)。

GET http://localhost/api/get?id={{$uuid}}創(chuàng)建環(huán)境變量

在項(xiàng)目?jī)?nèi)部,創(chuàng)建以下文件:

在rest-client.env.json(或http-client.env.json)是包含常見(jiàn)的變量,其目的是要與你的項(xiàng)目一起 分發(fā)的常規(guī)文件。 在rest-client.private.env.json(或http-client.private.env.json)是一個(gè) 私人 的文件可能包括密 碼,令牌,證書(shū)和其他敏感信息。默認(rèn)情況下,此文件被添加到VCS忽略文件列表中。在httpclient.private.env.json文件中指定的變量的值將覆蓋環(huán)境文件中的值。

{ 'dev': { 'host': 'http://127.0.0.1:80', 'name': 'zhangsan' }, 'prod': { 'host': 'http://127.0.0.1:80', 'name':'lisi' }}

調(diào)用示例

GET http://{{host}}/api/get?name={{name}}

腳本設(shè)置環(huán)境變量

//設(shè)置環(huán)境變量> {%client.global.set('token', response.body.token);%}腳本檢測(cè)

可以對(duì)返回值進(jìn)行打印,斷言;

# 登陸POST http://{{host}}/system/loginContent-Type: application/x-www-form-urlencodedusername=admin&password=123456> {% client.log(JSON.stringify(response.body));client.test('Request executed successfully', function() {client.assert(response.status === 200, 'Response status is not 200');});client.test('Response content-type is json', function() {var type = response.contentType.mimeType;client.assert(type === 'application/json', 'Expected ’application/json’ but received ’' + type + '’');});client.test('Request code success', function() {client.assert(response.body.code === 0, 'Response code is not 0');client.global.set('token', response.body.data);});%}###類型介紹 client

client.global

set(varName, varValue) // 設(shè)置全局變量 get(varName) // 獲取全局變量 isEmpty // 檢查 global 是否為空 clear(varName) // 刪除變量 clearAll // 刪除所有變量 client.test(testName, func) // 創(chuàng)建一個(gè)名稱為 testName 的測(cè)試 client.assert(condition, message) // 校驗(yàn)條件 condition 是否成立,否則拋出異常 message client.log(text) // 打印日志 response response.body // 字符串 或 JSON (如果 content-type 為 application/json .) response.headers

valueOf(headerName) // 返回第一個(gè)匹配 headerName 的值,如果沒(méi)有匹配的返回 nullvaluesOf(headerName) // 返回所有匹配 headerName 的值的數(shù)組,如果沒(méi)有匹配的返回空數(shù)組

response.status // Http 狀態(tài)碼,如: 200 / 400 response.contentType

mimeType // 返回 MIME 類型,如: text/plain , text/xml , application/json .charset // 返回編碼 UTF-8 等

示例test.http

#### GET請(qǐng)求GET http://{{host}}/api/get?name={{name}}#### POST請(qǐng)求POST http://{{host}}/api/post/kvContent-Type: application/x-www-form-urlencodedname=zhangsan&age=11#### POST請(qǐng)求POST http://{{host}}/api/post/jsonContent-Type: application/jsonreferer: https://goframe.org/cookie: name=zhangsan; age=11{'name':'zhangsan','age':11}###

test2.http

#### 未登錄POST http://{{host}}/system/user/info> {% client.log(JSON.stringify(response.body));client.test('Request executed successfully', function() {client.assert(response.status === 404, 'Response status is not 200');});client.test('Response content-type is json', function() {var type = response.contentType.mimeType;client.assert(type === 'application/json', 'Expected ’application/json’ but received ’' + type + '’');});client.test('Request code fail', function() {client.assert(response.body.code === -1, 'Response code is not -1');});%}#### 登陸POST http://{{host}}/system/loginContent-Type: application/x-www-form-urlencodedusername=admin&password=123456> {% client.log(JSON.stringify(response.body));client.test('Request executed successfully', function() {client.assert(response.status === 200, 'Response status is not 200');});client.test('Response content-type is json', function() {var type = response.contentType.mimeType;client.assert(type === 'application/json', 'Expected ’application/json’ but received ’' + type + '’');});client.test('Request code success', function() {client.assert(response.body.code === 0, 'Response code is not 0');client.global.set('token', response.body.data);});%}#### 登陸后訪問(wèn)用戶信息POST http://{{host}}/system/user/infotoken: {{token}}> {% client.log(JSON.stringify(response.body));client.test('Request executed successfully', function() {client.assert(response.status === 200, 'Response status is not 200');});client.test('Response content-type is json', function() {var type = response.contentType.mimeType;client.assert(type === 'application/json', 'Expected ’application/json’ but received ’' + type + '’');});client.test('Request code success', function() {client.assert(response.body.code === 0, 'Response code is not 0');});%}#### 登陸后訪問(wèn)用戶年齡POST http://{{host}}/system/user/agetoken: {{token}}> {% client.log(JSON.stringify(response.body));client.test('Request executed successfully', function() {client.assert(response.status === 200, 'Response status is not 200');});client.test('Response content-type is json', function() {var type = response.contentType.mimeType;client.assert(type === 'application/json', 'Expected ’application/json’ but received ’' + type + '’');});client.test('Request code success', function() {client.assert(response.body.code === 0, 'Response code is not 0');});%}###

http-client.env.json

{ 'dev': { 'host': 'http://127.0.0.1:80', 'name': 'zhangsan' }, 'prod': { 'host': 'http://127.0.0.1:80', 'name':'lisi' }}

main.go

package mainimport ('github.com/gogf/gf/frame/g''github.com/gogf/gf/net/ghttp''github.com/gogf/gf/util/guuid')var token stringfunc main() {s := g.Server()group := s.Group('/api')// 默認(rèn)路徑// GET帶參數(shù)group.GET('/get', func(r *ghttp.Request) {r.Response.Writeln('Hello World!')r.Response.Writeln('name:', r.GetString('name'))})// POST KVgroup.POST('/post/kv', func(r *ghttp.Request) {r.Response.Writeln('func:test')r.Response.Writeln('name:', r.GetString('name'))r.Response.Writeln('age:', r.GetInt('age'))})// POST JSONgroup.POST('/post/json', func(r *ghttp.Request) {r.Response.Writeln('func:test2')r.Response.Writeln('name:', r.GetString('name'))r.Response.Writeln('age:', r.GetString('age'))h := r.Headerr.Response.Writeln('referer:', h.Get('referer'))r.Response.Writeln('cookie:', h.Get('cookie'))r.Response.Writeln(r.Cookie.Map())})// 模擬登陸system := s.Group('/system')// 登陸接口system.POST('/login', func(r *ghttp.Request) {if 'admin' == r.GetString('username') &&'123456' == r.GetString('password') {token = guuid.New().String()r.Response.WriteJson(g.Map{'code': 0,'data': token,})r.Exit()}r.Response.WriteJson(g.Map{'code': -1,'data': '',})})// 獲取用戶信息system.POST('/user/info', func(r *ghttp.Request) {if token != r.Header.Get('token') || token == '' {r.Response.WriteJson(g.Map{'code': -1,'data': '',})r.Exit()}// 返回用戶信息r.Response.WriteJson(g.Map{'code': 0,'data': 'zhangsan',})})// 獲取用戶年齡system.POST('/user/age', func(r *ghttp.Request) {if token != r.Header.Get('token') || token == '' {r.Response.WriteJson(g.Map{'code': -1,'data': '',})r.Exit()}// 返回用戶信息r.Response.WriteJson(g.Map{'code': 0,'data': 11,})})s.SetPort(80)s.Run()}

代碼地址

github:https://github.com/goflyfox/tools

gitee:https://gitee.com/goflyfox/tools

教程視頻

bilibili教程地址:https://www.bilibili.com/video/BV12V411f7ab/

到此這篇關(guān)于IDEA中的HTTP Client使用教程的文章就介紹到這了,更多相關(guān)IDEA HTTP Client使用內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: IDEA
相關(guān)文章:
主站蜘蛛池模板: 日韩一级免费大片 | 欧美日韩国产一区二区 | 久久午夜精品福利一区二区 | 国产福利视频网站 | 亚洲精品一二三区 | 国产在线精品一区 | 午夜色婷婷 | 91精品国产色综合久久 | 亚洲电影第1页 | 亚洲444eee在线观看 | 四虎最新视频 | 一区二区日韩 | 黄色成人在线网站 | 在线观看视频福利 | 国产成人99久久亚洲综合精品 | 免费xxxx大片国产在线 | 欧美一区二区三区四区视频 | 国产一区久久精品 | 91夜色在线观看 | 91免费在线 | 国产精品日日做人人爱 | 国产精品日韩欧美一区二区三区 | 久久r精品 | 欧美日在线 | 久久这里只有精品首页 | 精品在线一区 | 精品欧美一区二区在线观看 | www.com久久久 | 欧美一级在线视频 | 视频在线亚洲 | 中文字幕高清av | 成人在线观看免费爱爱 | 日美女逼逼 | 免费黄色的视频 | 久久久精品黄色 | 久久成人一区 | 视频一区二区国产 | 超碰97免费在线 | 亚洲日韩中文字幕一区 | 精品国产91乱码一区二区三区 | 亚洲第一区久久 |