httpie

GitHub

提供HTTPie CLI工具的使用指南,支持发送各类HTTP请求、测试API端点、处理认证及文件上传,用于快速调试和交互REST服务。

opencode/skills/httpie/SKILL.md jjmartres/opencode

Trigger Scenarios

需要发送GET/POST等HTTP请求 测试或调试API接口 调用RESTful服务 用户提及使用httpie或类似CLI工具

Install

npx skills add jjmartres/opencode --skill httpie -g -y
More Options

Non-standard path

npx skills add https://github.com/jjmartres/opencode/tree/main/opencode/skills/httpie -g -y

Use without installing

npx skills use jjmartres/opencode@httpie

指定 Agent (Claude Code)

npx skills add jjmartres/opencode --skill httpie -a claude-code -g -y

安装 repo 全部 skill

npx skills add jjmartres/opencode --all -g -y

预览 repo 内 skill

npx skills add jjmartres/opencode --list

SKILL.md

Frontmatter
{
    "name": "httpie",
    "description": "Use this skill whenever the user wants to make HTTP requests, test APIs, call REST endpoints, debug web services, or interact with any HTTP\/HTTPS API using the HTTPie CLI tool (`http` command). Trigger this skill for any request involving: sending GET\/POST\/PUT\/PATCH\/DELETE requests, testing API endpoints, sending JSON or form data, working with authentication (Bearer token, Basic auth), uploading files, downloading responses, managing sessions, inspecting request\/response headers, or piping HTTP calls in shell scripts. Use this skill even when the user just says \"call the API\", \"send a request\", \"hit this endpoint\", or \"test with httpie\" ¿ don't wait for explicit httpie mention."
}

HTTPie CLI Skill

HTTPie is a modern, human-friendly HTTP client for the command line. The main command is http (or https for HTTPS-only).

Installation

# pip (recommended)
pip install httpie

# brew (macOS)
brew install httpie

# apt (Debian/Ubuntu)
sudo apt install httpie

Verify: http --version


Request Syntax

http [METHOD] URL [REQUEST_ITEMS...]
  • METHOD is optional: defaults to GET when no data, POST when data is present
  • URL: scheme defaults to http://; use :3000 as shorthand for localhost:3000

Request Items ¿ Key Separators

Separator Type Example
= JSON string field (or form field with -f) name=Jean
:= Raw JSON value (non-string) active:=true, count:=42, tags:='["a","b"]'
== URL query parameter search==httpie
: HTTP header Authorization:Bearer TOKEN
@ File upload (form/multipart) file@./report.pdf
=@ File content as string field body=@./message.txt
:=@ File content as raw JSON config:=@./config.json

Common Examples

GET requests

# Simple GET
http GET https://api.example.com/users

# With query params
http GET https://api.example.com/users search==alice limit==10

# Shorthand (method inferred)
http https://api.example.com/users

# Localhost shorthand
http :8080/health

POST with JSON (default)

# String and non-string fields
http POST https://api.example.com/users \
  name="Jean-Jacques" \
  email="jj@example.com" \
  active:=true \
  roles:='["admin","user"]'

# Inline raw JSON body (pipe it in)
echo '{"name":"test"}' | http POST https://api.example.com/users

PUT / PATCH / DELETE

http PUT https://api.example.com/users/42 name="Updated"
http PATCH https://api.example.com/users/42 email="new@example.com"
http DELETE https://api.example.com/users/42

Form data (-f)

http -f POST https://api.example.com/login username=admin password=secret

File upload (multipart)

http -f POST https://api.example.com/upload file@./document.pdf title="My Doc"

Authentication

# Basic auth
http -a username:password https://api.example.com/secure

# Bearer token
http -A bearer -a TOKEN https://api.example.com/secure

# Prompt for password (don't expose it in shell history)
http -a username https://api.example.com/secure

Headers

# Custom headers
http GET https://api.example.com/data \
  Accept:application/json \
  X-Request-Id:abc-123 \
  Authorization:"Bearer $(cat token.txt)"

Output Control

# Show full exchange (request + response)
http -v GET https://api.example.com/users

# Only response headers
http -h GET https://api.example.com/users

# Only response body
http -b GET https://api.example.com/users

# Show request headers + response body
http --print=Hb GET https://api.example.com/users
# Flags: H=request headers, B=request body, h=response headers, b=response body, m=metadata

# No color / formatting (useful in scripts)
http --pretty=none GET https://api.example.com/users

# Check HTTP status (exit non-zero on 4xx/5xx)
http --check-status GET https://api.example.com/users

Download Files

# Download and auto-name
http --download https://example.com/file.zip

# Download to specific path
http --download -o /tmp/output.zip https://example.com/file.zip

# Resume interrupted download
http --download --continue -o /tmp/output.zip https://example.com/file.zip

Sessions (Persist cookies & auth)

# Create/use named session (stored in ~/.config/httpie/sessions/)
http --session=myapi POST https://api.example.com/login username=admin password=secret
http --session=myapi GET https://api.example.com/profile

# Read-only session (don't update it)
http --session-read-only=myapi GET https://api.example.com/data

Useful Flags

--offline          # Build and print request without sending it (dry-run)
--follow           # Follow redirects
--timeout=10       # Set timeout in seconds (default: 0 = no timeout)
--proxy=http:http://proxy:8080  # Use a proxy
--verify=no        # Skip SSL certificate verification (¿¿ dev only)
--cert=./cert.pem  # Client TLS certificate
--stream           # Stream response body (useful for SSE / long-polling)
--quiet            # Suppress output except errors

Scripting Patterns

Avoid stdin conflicts in scripts

When running HTTPie in a script or CI pipeline where stdin may not be a TTY, add --ignore-stdin to avoid the "body from stdin and key=value cannot be mixed" error:

http --ignore-stdin POST https://api.example.com/users name=test active:=true

Use in shell pipelines

# Extract a field with jq
TOKEN=$(http POST https://api.example.com/auth username=admin password=secret \
  --pretty=none -b | jq -r '.token')

# Pass token to next call
http GET https://api.example.com/profile "Authorization:Bearer $TOKEN"

Exit codes with --check-status

if http --check-status --quiet GET https://api.example.com/health; then
  echo "API is up"
else
  echo "API returned error"
fi

Offline dry-run (inspect before sending)

http --offline POST https://api.example.com/users name=test active:=true

HTTPie vs curl Equivalents

Goal HTTPie curl
GET request http GET url curl url
POST JSON http POST url key=val curl -X POST -H 'Content-Type: application/json' -d '{"key":"val"}' url
Bearer auth http -A bearer -a TOKEN url curl -H 'Authorization: Bearer TOKEN' url
Show headers http -h url curl -I url
Verbose http -v url curl -v url

Configuration

HTTPie config lives at ~/.config/httpie/config.json:

{
  "default_options": ["--style=monokai", "--pretty=all", "--check-status"]
}

Tips

  • Always quote values with spaces: description='hello world'
  • Escape colons in field names: field\:name=value
  • GCP/cloud APIs: use http -A bearer -a "$(gcloud auth print-access-token)" ...
  • Pipe JSON input: cat payload.json | http POST https://api.example.com/endpoint
  • Debug CI pipelines: use --offline to validate request shape without actually calling the API
  • Combine with jq for powerful JSON manipulation in scripts

Version History

  • 28dc323 Current 2026-07-25 07:04

Same Skill Collection

opencode/skills/caveman-commit/SKILL.md
opencode/skills/caveman-compress/SKILL.md
opencode/skills/caveman-review/SKILL.md
opencode/skills/caveman/SKILL.md
opencode/skills/code-docs/SKILL.md
opencode/skills/content-research-writer/SKILL.md
opencode/skills/datadog/SKILL.md
opencode/skills/file-organizer/SKILL.md
opencode/skills/glab/SKILL.md
opencode/skills/humanizer/SKILL.md
opencode/skills/jira/SKILL.md
opencode/skills/marp-slide/SKILL.md
opencode/skills/mcp-builder/SKILL.md
opencode/skills/meeting-insights-analyzer/SKILL.md
opencode/skills/project-docs/SKILL.md
opencode/skills/skill-judge/SKILL.md
opencode/skills/work-on-ticket/SKILL.md
opencode/skills/writing-clearly-and-concisely/SKILL.md
opencode/skills/asdf/SKILL.md
opencode/skills/mermaid-diagrams/SKILL.md
opencode/skills/worktrunk/SKILL.md

Metadata

Files
0
Version
28dc323
Hash
f2cb9f03
Indexed
2026-07-25 07:04

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-20 13:37
浙ICP备14020137号-1 $Гость$