Apidog

올인원 협업 API 개발 플랫폼

API 설계

API 문서

API 디버깅

API 모킹

API 자동화 테스트

2025년에 HTTPie를 사용하는 방법은?

HTTPie는 HTTP 서버 및 API와의 상호작용을 간소화하는 명령줄 도구입니다. 2024년에 HTTPie를 사용하여 요청을 보내고, 파일을 업로드하며, 세션을 관리하는 방법을 배우세요.

Young-jae

Young-jae

Updated on December 20, 2024

HTTPie는 HTTP 서버와 상호작용할 수 있는 명령줄 도구로, 사람 친화적인 방법으로 사용할 수 있습니다. 간단하고 표현력이 뛰어난 구문을 가지고 있으며, JSON 및 폼 데이터 지원, 인증 및 헤더 처리, 색상화되고 포맷된 출력을 제공합니다. 또한 세션, 플러그인, 프록시와 같은 몇 가지 고급 기능을 포함하여 더욱 강력하고 다재다능합니다.

이 블로그 게시물에서는 HTTPie를 설치하고 사용하는 방법, 그리고 이것이 어떻게 귀하의 API를 쉽게 테스트하고 디버깅하는 데 도움이 되는지 보여드리겠습니다. 또한 제가 배운 몇 가지 팁과 요령, 그리고 HTTPie에 대해 더 배울 수 있는 리소스를 공유하겠습니다.

button

HTTPie 설치 방법

HTTPie를 사용하기 위한 첫 번째 단계는 시스템에 설치하는 것입니다. HTTPie는 Python으로 작성되었으며, Python 패키지 관리자 pip를 사용하여 설치할 수 있습니다. 이를 위해 터미널을 열고 다음 명령을 실행하십시오:

pip install --upgrade httpie

이 명령은 시스템에 최신 버전의 HTTPie를 설치하며, 기존 버전이 있다면 이를 업그레이드합니다. 다음 명령을 실행하여 HTTPie 버전을 확인할 수 있습니다:

http --version

다음과 같은 출력을 보아야 합니다:

http 2.5.0
HTTPie - 사람들을 위한 CLI, cURL과 유사한 도구.
https://httpie.io

이 출력을 보았다면, 축하합니다! HTTPie를 성공적으로 설치했으며 사용할 준비가 되었습니다.

HTTPie로 HTTP 요청 보내는 방법

HTTPie의 기본 구문은:

http [flags] [METHOD] URL [ITEM [ITEM]]

여기서:

  • flags는 HTTPie의 동작을 수정하는 선택적 인수로, -v는 자세한 모드, -h는 도움말, -f는 리다이렉트 따르기를 의미합니다.
  • METHOD는 사용할 HTTP 메서드로, GET, POST, PUT, PATCH, DELETE 등을 포함합니다. 생략 시 HTTPie는 기본적으로 GET을 사용합니다.
  • URL는 상호작용할 HTTP 서버의 URL로, https://example.com/api/users와 같은 형태입니다.
  • ITEM은 요청 데이터를 지정하는 선택적 키-값 쌍으로, 폼 데이터의 경우 name=John, 또는 JSON 데이터의 경우 name:=John과 같은 형식입니다. 또한 ITEM을 사용하여 헤더를 지정할 수 있습니다, 예를 들어 User-Agent:HTTPie와 같은 형식입니다.

예를 들어 https://example.com/api/users에 GET 요청을 보내려면 다음과 같이 실행하면 됩니다:

http https://example.com/api/users

이 명령은 해당 URL에 GET 요청을 보내고, 색상화되고 포맷된 방식으로 응답을 표시합니다. 다음과 같은 출력을 보게 됩니다:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 326
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"146-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express

[
    {
        "id": 1,
        "name": "John",
        "email": "john@example.com"
    },
    {
        "id": 2,
        "name": "Jane",
        "email": "jane@example.com"
    },
    {
        "id": 3,
        "name": "Bob",
        "email": "bob@example.com"
    }
]

보시다시피, HTTPie는 응답 상태 라인, 헤더 및 본문을 명확하고 읽기 쉬운 방식으로 표시합니다. 또한 다양한 응답 부분을 강조하기 위해 색상을 사용하며, 헤더는 초록색, JSON 키는 파란색, JSON 값은 노란색으로 표시됩니다.

HTTPie로 POST, PUT, PATCH 또는 DELETE와 같은 다른 HTTP 방법도 사용할 수 있으며, URL 앞에 메서드를 지정하면 됩니다. 예를 들어 https://example.com/api/users에 두 개의 JSON 데이터를 POST 요청으로 보내려면 다음과 같이 실행할 수 있습니다:

http POST https://example.com/api/users name=John email=john@example.com

이 명령은 URL에 POST 요청을 보내며, 요청 본문에 다음 JSON 데이터가 포함됩니다:

{
    "name": "John",
    "email": "john@example.com"
}

비슷하게,:= 연산자를 사용하여 JSON 값을 지정할 수 있으며, 예를 들어 name:="John" 또는 age:=25와 같은 형태입니다. 이는 숫자, 불리언, 배열 또는 객체와 같은 비문자열 값을 전송할 때 유용합니다.

HTTPie는 이전과 동일한 방식으로 응답을 표시하지만 이는 다른 상태 코드와 본문을 갖습니다. 다음과 같은 출력을 보게 됩니다:

HTTP/1.1 201 Created
Connection: keep-alive
Content-Length: 110
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"6e-8a9e8c9f"
Location: /api/users/4
Server: nginx/1.19.6
X-Powered-By: Express

{
    "id": 4,
    "name": "John",
    "email": "john@example.com"
}

보시다시피, HTTPie는 응답 상태 코드를 201 Created로 표시하여 새로운 리소스가 서버에 생성되었음을 나타냅니다. 또한 새로 생성된 리소스의 URL을 가리키는 Location 헤더를 표시합니다. 응답 본문에는 새 사용자의 JSON 표현이 포함되어 있습니다.

다른 HTTP 메서드를 보내기 위해 동일한 구문을 사용할 수 있으며, 메서드 이름을 바꾸어 넣으면 됩니다. 예를 들어, ID가 4인 사용자의 이름을 업데이트하려면 다음과 같이 실행하십시오:

http PATCH https://example.com/api/users/4 name=Jack

이 명령은 URL에 PATCH 요청을 보내며, 요청 본문에 다음 JSON 데이터가 포함됩니다:

{
    "name": "Jack"
}

HTTPie는 이전과 동일한 방식으로 응답을 표시하지만 다른 상태 코드와 본문을 갖습니다. 다음과 같은 출력을 보게 됩니다:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 110
Content-Type: application/json; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"6e-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express

{
    "id": 4,
    "name": "Jack",
    "email": "john@example.com"
}

보시다시피, HTTPie는 응답 상태 코드를 200 OK로 표시하여 리소스가 성공적으로 업데이트되었음을 나타냅니다. 응답 본문에는 업데이트된 사용자의 JSON 표현이 포함되어 있습니다.

HTTPie를 사용하여 폼 데이터를 보내려면 := 연산자 대신 = 연산자를 사용하십시오. 예를 들어 https://example.com/api/login에 폼 데이터와 함께 POST 요청을 보내려면 다음과 같이 실행하면 됩니다:

http POST https://example.com/api/login username=John password=secret

이 명령은 URL에 POST 요청을 보내며, 요청 본문에 다음 폼 데이터가 포함됩니다:

username=John&password=secret

HTTPie는 이전과 동일한 방식으로 응답을 표시하지만 다른 콘텐츠 유형과 본문을 갖습니다. 다음과 같은 출력을 보게 됩니다:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 32
Content-Type: text/plain; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"20-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express

로그인 성공. 환영합니다, John!

보시다시피, HTTPie는 응답 콘텐츠 유형을 text/plain으로 표시하여 응답 본문이 일반 텍스트임을 나타냅니다. 응답 본문에는 로그인 확인 메시지가 포함되어 있습니다.

HTTPie로 응답 본문 및 헤더 검사하는 방법

HTTPie의 훌륭한 기능 중 하나는 응답 본문 및 헤더를 자동으로 구문 분석하고 형식화하여 콘텐츠 유형에 따라 다르게 표시한다는 점입니다. 예를 들어, 응답이 JSON인 경우 HTTPie는 이전에 보았던 것처럼 예쁘고 색상화된 방식으로 표시합니다. 응답이 HTML인 경우 HTTPie는 원시 텍스트로 표시하지만 구문 강조가 있습니다. 응답이 이미지인 경우 HTTPie는 이진 데이터로 표시하되, 이미지 유형 및 크기 힌트를 제공합니다.

HTTPie가 응답을 표시하는 방식을 수정하기 위해 일부 플래그를 사용할 수도 있습니다. 예를 들어, -b 또는 --body 플래그를 사용하여 헤더 없이 응답 본문만 표시할 수 있습니다. -h 또는 --headers 플래그를 사용하여 본문 없이 응답 헤더만 표시할 수 있습니다. -p 또는 --print 플래그를 사용하여 요청 및 응답의 어떤 부분을 인쇄할지 지정할 수 있으며, 다음 문자를 사용할 수 있습니다:

  • H: 요청 헤더
  • B: 요청 본문
  • h: 응답 헤더
  • b: 응답 본문

예를 들어 요청 헤더와 응답 본문만 표시하려면 다음과 같이 실행할 수 있습니다:

http -p HB https://example.com/api/users

이 명령은 다음과 같은 출력을 표시합니다:

GET /api/users HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: example.com
User-Agent: HTTPie/2.5.0

[
    {
        "id": 1,
        "name": "John",
        "email": "john@example.com"
    },
    {
        "id": 2,
        "name": "Jane",
        "email": "jane@example.com"
    },
    {
        "id": 3,
        "name": "Bob",
        "email": "bob@example.com"
    }
]

보시다시피, HTTPie는 요청 헤더와 응답 본문을 표시하지만 응답 헤더나 요청 본문은 표시하지 않습니다.

HTTPie에 -j 또는 --json 플래그를 사용하여 응답을 JSON으로 강제로 처리할 수도 있습니다. 이는 서버가 올바른 콘텐츠 유형을 전송하지 않거나 비JSON 응답을 JSON으로 구문 분석하려는 경우에 유용합니다. 예를 들어, 일반 텍스트 응답을 JSON으로 처리하려면 다음과 같이 실행할 수 있습니다:

http -j https://example.com/api/hello

이 명령은 다음과 같은 출력을 표시합니다:

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 13
Content-Type: text/plain; charset=utf-8
Date: Thu, 08 Feb 2024 05:43:25 GMT
ETag: W/"d-8a9e8c9f"
Server: nginx/1.19.6
X-Powered-By: Express

{
    "hello": "world"
}

보시다시피, HTTPie는 일반 텍스트 응답을 JSON으로 구문 분석하고 예쁘고 색상화된 방식으로 표시합니다.

HTTPie에 -o 또는 --output 플래그를 사용하여 응답 본문을 파일로 저장할 수도 있습니다. 이는 서버에서 이미지, PDF 또는 ZIP 파일과 같은 파일을 다운로드하려는 경우에 유용합니다. 예를 들어 https://example.com/api/image에서 이미지를 다운로드하려면 다음과 같이 실행하십시오:

http -o image.jpg https://example.com/api/image

이 명령은 현재 디렉터리에 image.jpg라는 이름의 파일로 이미지를 저장합니다. -d 또는 --download 플래그를 사용하여 URL 및 콘텐츠 유형을 기반으로 파일 이름을 자동 생성할 수도 있습니다. 예를 들어, 동일한 이미지를 다운로드하려면 다음과 같이 실행하십시오:

http -d https://example.com/api/image

이 명령은 현재 디렉터리에 image-20240208-054325.jpg라는 이름의 파일로 이미지를 저장하며, 날짜 및 시간이 접미사로 사용됩니다.

보시다시피, HTTPie는 응답 본문 및 헤더를 검사하고 응답을 파일로 저장할 수 있는 많은 옵션을 제공합니다. 이러한 옵션을 사용하여 API를 테스트하고 디버깅하며 응답의 내용과 형식을 확인할 수 있습니다.

HTTPie의 한계

HTTPie는 HTTP 서버 및 API와 상호작용하기 위한 강력하고 사용자 친화적인 명령줄 도구입니다. 그러나 몇 가지 제한 사항도 있습니다. 예를 들어:

  • HTTPie는 현대 웹 개발에서 점점 더 인기를 얻고 있는 GraphQL, WebSocket 또는 gRPC 프로토콜을 지원하지 않습니다.
  • GUI(그래픽 사용자 인터페이스)나 웹 버전이 없어서 터미널에 익숙하지 않은 일부 사용자에게는 불편할 수 있습니다.
  • API 설계, 문서화, 모킹 또는 테스트를 위한 내장 기능이 없으므로 API 개발 및 협업에 필수적입니다.

Apidog를 사용해야 하는 이유

Apidog 는 API 설계, 디버깅, 개발, 모의 및 테스트를 위한 통합 플랫폼입니다. Postman, Swagger, Mock 및 JMeter의 기능을 하나의 도구로 결합합니다. 만약 당신이 다음과 같은 것을 찾고 있다면 Apidog를 사용하는 것이 좋습니다:

  • 설계에서 테스트, 모킹 및 문서화에 이르기까지 전체 API 라이프사이클을 위한 포괄적이고 협력적인 솔루션.
  • HTTP, GraphQL, WebSocket 및 gRPC와 같은 여러 프로토콜을 지원하는 도구.
  • 데스크톱 앱과 웹 버전, 명령줄 인터페이스(CLI)가 모두 있는 도구.
  • API 설계 우선을 구현하여 API, 사양 및 수정 사항의 동기화를 쉽게 할 수 있는 도구.

1단계. Apidog를 열고 “새 API”를 클릭하여 테스트할 새 API를 생성하십시오.

2단계. API에 사용할 HTTP 메서드를 선택하고 엔드포인트 URL을 입력합니다.

3단계. API 사양에 따라 매개변수와 같은 필요한 정보를 입력하고 "전송" 버튼을 클릭하여 API 요청을 보내고 응답을 가져옵니다.

결론

HTTPie는 터미널에서 HTTP 서버 및 API와 통신할 수 있는 강력하고 사용자 친화적인 도구입니다. 요청과 응답을 사용자 지정하고 형식화하는 많은 기능과 옵션을 제공합니다. HTTPie를 사용하여 API를 테스트하고 디버깅하며 탐색할 수 있을 뿐만 아니라, 작업과 워크플로를 자동화할 수도 있습니다.

API 설계, 디버깅, 개발, 모킹 및 테스트를 위한 보다 통합된 플랫폼을 사용하고 싶다면 Apidog를 사용할 수도 있습니다. Apidog는 설계에서 테스트, 모킹 및 문서화에 이르기까지 전체 API 라이프사이클을 연결하는 도구입니다.

GitHub Copilot 무료: 어떻게 시작하나요?튜토리얼

GitHub Copilot 무료: 어떻게 시작하나요?

GitHub Copilot 무료 사용법을 알아보세요. 이 AI 기반 코딩 도우미에 대한 이 가이드는 VS Code와 JetBrains와 같은 인기 IDE의 설정 단계를 다루며, 무료로 스마트한 코드 제안 및 완성을 통해 생산성을 높일 수 있도록 도와줍니다!

Young-jae

December 19, 2024

API 요청 최적화를 위한 ModHeader Chrome 확장 프로그램 사용 방법튜토리얼

API 요청 최적화를 위한 ModHeader Chrome 확장 프로그램 사용 방법

이 포괄적인 가이드에서 ModHeader Chrome 확장을 사용한 효과적인 API 테스트를 위한 실용적인 팁과 모범 사례를 배워보세요.

Young-jae

December 19, 2024

JSON 스키마 검증 방법: 완벽 가이드튜토리얼

JSON 스키마 검증 방법: 완벽 가이드

사전 정의된 JSON 스키마에 대해 JSON 데이터를 검증하는 방법을 배워 데이터 무결성과 특정 제약 조건 준수를 보장할 수 있습니다.

Young-jae

December 18, 2024