개요

HTTP 메시지를 보내고 받을 수 있다.

설치 방법

  • VimPlug
Plug 'diepm/vim-rest-console'

간단한 사용 방법

확장명이 rest인 파일을 만들고 Vim에서 열어주면 된다.

파일의 내용엔 다음과 같이 HTTP 리퀘스트 메시지를 작성해주면 된다.

# 공통으로 사용할 header 를 다음과 같이 작성해준다
Content-Type: application/json; charset=utf-8
Authorization: XXXX XXXX-XXXX
--

# GET 요청을 보낸다
https://httpbin.org/
GET /ip

# 헤더를 개별 정의하려면 URI 아래에 두면 된다.
# POST 요청을 보낸다
https://httpbin.org/
Content-Type: application/json; charset=utf-8
Authorization: XXXX XXXX-XXXX
POST /post
{
    "test" : "1234"
}

# GET, POST 는 물론이고 모든 HTTP 메소드를 사용할 수 있다.
https://httpbin.org/
PUT /put
{
    "test": "1234"
}
  • 커서를 각 항목 위에 놓고 <C-j>를 입력하면, 해당 문단에 작성해 둔 메시지로 리퀘스트를 보낸다.
  • 리스폰스를 받으면 오른쪽에 vs를 열고 보여준다.

트리거 키 변경

다음과 같이 변경해주면 된다.

let g:vrc_trigger = '<C-k>'

문제 해결

json 결과 출력에 formatting이 안 되는 문제

vim-rest-console은 결과 출력의 포매팅을 위해 다음과 같은 옵션을 디폴트로 제공하고 있다.

let s:vrc_auto_format_response_patterns = {
  \ 'json': 'python -m json.tool',
  \ 'xml': 'xmllint --format -',
\}

하지만 막상 실행해 보면 다음과 같이 표기되며, 포매팅이 안 되는 경우가 있다.

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100   129  100   129    0     0    146      0 --:--:-- --:--:-- --:--:--   146
{"headers":{"Accept":"*/*","Content-Type":"application/json","Host":"nghttp2.org","User-Agent":"curl/7.54.0","Via":"2 nghttpx"}}

원인은 심플하다. curl 수행 보고 테이블이 위에 출력되기 때문에 python -m json.tool이 통하지 않는 것이다.

이 문제를 해결하려면 다음과 같이 vrc가 리퀘스트를 보낼 때 curl-s 옵션(silence)을 사용하도록 설정해주면 된다.

let g:vrc_curl_opts = {
  \ '-s': '',
\}

이렇게 수정한 다음, 다시 실행해 보면 다음과 같이 포매팅이 완료된 결과가 나온다.

{
    "headers": {
        "Accept": "*/*",
        "Content-Type": "application/json",
        "Host": "nghttp2.org",
        "User-Agent": "curl/7.54.0",
        "Via": "2 nghttpx"
    }
}

Links