vs code의 확장 프로그램으로 다운받아 사용,
파일 내부에서 HTTP요청을 작성하고 실행 할 수 있다.


1. 설치하기

 


2. HTTP요청 작성 방법

 .HTTP 확장자로 갖는 파일을 생성

2-1. GET 요청 작성하기 
 요청 메소드와 URI을 작성 (HTTP/1.1 은 생략 가능)  

GET https://jsonplaceholder.typicode.com/posts/1 HTTP/1.1



위와 같은 라인을 요청 라인 이라고 하며, 요청라인 작성하면 아래와 같이 send Request버튼이 생성된다.   



send Request를 클릭하면 REST Clinet 가 VS Code 내부에서 직접 URI에 요청하여 응답 결과를 보여주어, 새로운 탭에서 http Response를 확인 할 수 있다.



2-2. POST 요청 작성하기 
여러개의 요청을 작성 시 요청과 요청 사이는 구분자 ###을 추가하여 구분한다. 

GET https://jsonplaceholder.typicode.com/posts/1 HTTP/1.1
###



POST 요청 메소드와 URL 작성

POST https://jsonplaceholder.typicode.com/posts HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
  "name": "sample",
  "time": "Wed, 21 Oct 2015 18:27:50 GMT"
}




2-3. PUT/PATCH 요청 작성하기 

PUT 메소드는 리소스 전체를 업데이트 할 때 사용  
PATCH 메소드는 리소스의 일부분을 업데이트 할 때 사용

### 업데이트 요청
PUT https://jsonplaceholder.typicode.com/posts/1 HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
  "id": 1,
  "title": "Updated Title",
  "body": "Updated Body",
  "userId": 1
}

### 패치 요청
PATCH https://jsonplaceholder.typicode.com/posts/1 HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
  "title": "Patched Title"
}


구분자 ### 뒤에 요청에 대한 설명을 주석처럼 작성할 수 있다. 

2-4. DELETE 요청 작성하기

### 삭제 요청
DELETE https://jsonplaceholder.typicode.com/posts/1 HTTP/1.1


3. 상세 작성 방법

3-1. 요청 헤더 (Request Header)
 HTTP요청 해더는 요청 라인 바로 아래줄 부터 작성하며, 
해더명 : 값의 형태로 작성로 작성한다.  
여러 개의 해더를 설정 하려면 개행으로 구분한다.

POST https://jsonplaceholder.typicode.com/posts HTTP/1.1
User-Agent: rest-client
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6,zh-CN;q=0.4
Content-Type: application/json
Authorization: bearer abcdef...



3-2. 요청 바디(Request Body)
요청 바디는 요청 라인 혹은요청 헤더로부터 1개의 개행 간격을 두고 작성한다.  
Contetn-type에 따라 Body의 형태도 달라질 수 있다.

 JSON Body

(생략)
Content-Type: application/json

{
  "foo": "bar"
}



 XML

(생략)
Content-Type: application/xml

<request>
    <name>sample</name>
    <time>Wed, 21 Oct 2015 18:27:50 GMT</time>
</request>

 


 Multipart

(생략)
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="text"

title
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="image"; filename="1.png"
Content-Type: image/png

< ./1.png
------WebKitFormBoundary7MA4YWxkTrZu0gW--



 Form Data(x-www-form-urlencode)

(생략)
Content-Type: application/x-www-form-urlencoded

name=foo
&password=bar


3-3. 쿼리 스트링(Query String)

GET https://jsonplaceholder.typicode.com/comments?postId=1 HTTP/1.1


요청 라인에 위와 같이 쿼리 스트링을 포함하여 전송 가능하다. 

 3-4. 파일 변수
@를 사용하여 파일 내에서 변수를 정의할 수 있으며, 정의된 변수의 값에 접근 할 때는 
{ {변수명} } 형태로 작성 해 주면 된다.

@baseUrl = https://jsonplaceholder.typicode.com
@jwt = testjwt

GET {{baseUrl}}/posts HTTP/1.1
Authorization: bearer {{jwt}}


만약 변수가 정의되지 않은 경우 { {변수명} } 형식이 그대로 평문으로 사용된다. 

 3-5. 환경 변수 
.vscode/setting.json에 REST Client에서 사용할 수 있는 환경변수를 따로 정의하여 사용 할 수 있다.   
.vscode 라는 디렉토리를 생성하고 settings.json파일을 생성하여 아래와 같이 작성 한다.

{
  "rest-client.environmentVariables": {
    "$shared": {
      "baseUrl": "https://jsonplaceholder.typicode.com",
      "jwt": "testjwt"
    },
    "development": {
      "title": "Development Title"
    },
    "production": {
      "title": "Production Title"
    }
  }
}

/*
$shared에는 어떤 환경에서든 공유되는 환경변수 baseUrl 과 jwt 를 정의,  development 와 production 이라는 환경을 따로 정의 한 다음 각 환경에서만 사용 될 title 변수를 정의.
*/



이 후 아래와 같은 요청 작성하여 요청 할 수 있다.

POST {{baseUrl}}/posts HTTP/1.1
Content-Type: application/json
Authorization: bearer {{jwt}}

{
  "title": "{{title}}"
}



VS Code환경이 'No Environment'로 설정되어 있는 경우 오류가 날 수 있으므로 우측 하단 No Environment -> development 로 환경을 전환한다.

3-6 요청 변수
다른 요청의 응답을 변수에 담아 다른 요청에 사용

포스트 리스트를 불러와 리스트 첫번째 포스트의 title 과   
Response Headercontent-type을 그대로 POST요청으로 보내는 예제를 작성

# @name getPost
GET https://jsonplaceholder.typicode.com/posts HTTP/1.1

### Create Post
POST https://jsonplaceholder.typicode.com/posts HTTP/1.1
Content-Type: application/json

{
  "title": "{{getPost.response.body.$[0].title}}",
  "content-type": "{{getPost.response.headers.Content-Type}}"
}

 

+ Recent posts