PJCHENder 未整理筆記

[VSCode] Rest Client

2018-12-10

[VSCode] Rest Client

VSCode Rest Client @ Github

基本使用

  • 建立副檔名為 .http.rest 的檔案
  • 註解:使用 #// 當作註解
  • 分隔:使用 ### 當作多個 request 之間的分隔符號
  • 發送請求:選取要發送的請求,滑鼠點右鍵,或使用快捷鍵 cmd + alt + R
  • 透過 Cmd + Shift + P 輸入 Rest Client 可以看到所有和此套件有關的命令

發送請求

query string

1
2
3
GET https://example.com/comments
?page=2
&pageSize=10

application/urlencoded

1
2
3
4
5
POST https://api.example.com/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded

name=foo
&password=bar

檢視 request 紀錄

Cmd + Shift + P > View Request History

使用變數

在 Rest Client 中提供兩種類型的變數可以使用,第一種是 Custom Variables,這是透過使用者自己定義的,並且可以再細分成 Environment Variables, File VariablesRequest Variables;另一種則是 System Variables,這種變數是使用前就定義好的。

要使用 Custom Variables 的語法是 ;使用 System Variables 的語法是 ,兩者主要差別在有無 $

Custom Variables

  • Environment variables:定義在 VScode 的設定檔中,因此可以在不同的 http 檔案被使用。
  • File variables:用來定義在某支 http 檔案中會共用到的常數。
  • Request variables:用來定義在某支 http 檔案中,某個 request 可能必須皆須在另一個 request 之後,例如,需要先取得 Token 才能發送的請求。

File Variables

使用 File Variables 的語法像是這樣:

1
@variableName = variableValue
  • 變數名稱不可包含空白
  • 變數值可以包含空白
  • 變數的值可以參照到其他變數,例如 @token =
1
2
3
4
5
6
7
8
9
10
11
@hostname = api.example.com
@port = 8080
@host = {{hostname}}:{{port}}
@contentType = application/json
@createdAt = {{$datetime iso8601}}

###

@name = hello

GET https://{{host}}/authors/{{name}} HTTP/1.1

Request Variables

Request variables 和 file variables 很類似,它們的作用域都是在單一支 http 檔案中。定義 request variables 的方式和單行註解類似:

1
2
// @name requestName
# @name requestName

這個需要定義在 request url 之前,它後面所接的 request 可以稱做被命名的請求(Named Request),而一般的請求則是稱作匿名請求(Anonymous Request)。

在定義好 Named Request 後,其他的請求則可以參照到這個 Named Request。要取得 request variable 的方法如下:

1
{{requestName.(response|request).(body|headers).(*|JSONPath|XPath|Header Name)}}

舉例來說:

  • 透過 # @name login 我們定義下面這個請求的名稱為 login
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@baseUrl = https://example.com/api

# @name login
POST {{baseUrl}}/api/login HTTP/1.1
Content-Type: application/x-www-form-urlencoded

name=foo&password=bar

###

@authToken = {{login.response.headers.X-AuthToken}}

# @name createComment
POST {{baseUrl}}/comments HTTP/1.1
Authorization: {{authToken}}
Content-Type: application/json

{
"content": "fake content"
}

###

@commentId = {{createComment.response.body.$.id}}

# @name getCreatedComment
GET {{baseUrl}}/comments/{{commentId}} HTTP/1.1
Authorization: {{authToken}}

###

# @name getReplies
GET {{baseUrl}}/comments/{{commentId}}/replies HTTP/1.1
Accept: application/xml

###

# @name getFirstReply
GET {{baseUrl}}/comments/{{commentId}}/replies/{{getReplies.response.body.//reply[1]/@id}}

掃描二維條碼,分享此文章