Agent Skills
› NeverSight/learn-skills.dev
› curl-http
curl-http
GitHub提供curl和HTTPie命令行工具进行API测试的指南,涵盖GET/POST等请求、鉴权、文件上传及调试技巧。
Trigger Scenarios
test API
make HTTP request
curl POST
send request
test endpoint
debug API
Install
npx skills add NeverSight/learn-skills.dev --skill curl-http -g -y
SKILL.md
Frontmatter
{
"name": "curl-http",
"description": "API testing with curl and httpie for HTTP requests. Use when user asks to \"test API\", \"make HTTP request\", \"curl POST\", \"send request\", \"test endpoint\", \"debug API\", or make any HTTP calls from command line."
}
curl & HTTPie
Command-line HTTP clients for API testing.
curl Basics
GET Request
curl https://api.example.com/users
curl -s https://api.example.com/users # Silent
curl -i https://api.example.com/users # Include headers
POST Request
# JSON body
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"John","email":"john@example.com"}'
# From file
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d @data.json
Headers & Auth
# Custom header
curl -H "Authorization: Bearer token123" https://api.example.com
# Basic auth
curl -u username:password https://api.example.com
# Multiple headers
curl -H "Content-Type: application/json" \
-H "X-API-Key: key123" \
https://api.example.com
Other Methods
# PUT
curl -X PUT https://api.example.com/users/1 \
-H "Content-Type: application/json" \
-d '{"name":"Updated"}'
# PATCH
curl -X PATCH https://api.example.com/users/1 \
-d '{"status":"active"}'
# DELETE
curl -X DELETE https://api.example.com/users/1
File Upload
# Form upload
curl -X POST https://api.example.com/upload \
-F "file=@photo.jpg" \
-F "description=My photo"
# Binary
curl -X POST https://api.example.com/upload \
--data-binary @file.bin \
-H "Content-Type: application/octet-stream"
Useful Options
-v # Verbose (debug)
-s # Silent
-o file # Output to file
-O # Save with remote filename
-L # Follow redirects
-k # Ignore SSL errors
-w '\n' # Add newline after output
--max-time 10 # Timeout in seconds
HTTPie (Friendlier Alternative)
GET Request
http https://api.example.com/users
http GET api.example.com/users # Explicit GET
POST Request
# JSON (default)
http POST api.example.com/users name=John email=john@example.com
# String vs other types
http POST api.example.com/users name=John age:=30 active:=true
Headers & Auth
# Header
http api.example.com Authorization:"Bearer token"
# Basic auth
http -a user:pass api.example.com
# Bearer auth
http api.example.com "Authorization: Bearer token"
Output Control
http -h api.example.com # Headers only
http -b api.example.com # Body only
http -p Hh api.example.com # Request headers
Common Patterns
Test Response Code
# curl
status=$(curl -s -o /dev/null -w "%{http_code}" https://api.example.com)
echo "Status: $status"
# Check if successful
if curl -s -f https://api.example.com > /dev/null; then
echo "Success"
fi
Pretty Print JSON
curl -s https://api.example.com | jq .
curl -s https://api.example.com | python -m json.tool
Save Response & Headers
curl -D headers.txt -o response.json https://api.example.com
Retry on Failure
curl --retry 3 --retry-delay 2 https://api.example.com
Timing Info
curl -w "Time: %{time_total}s\n" -o /dev/null -s https://api.example.com
GraphQL
curl -X POST https://api.example.com/graphql \
-H "Content-Type: application/json" \
-d '{"query": "{ users { id name } }"}'
Debug
# Verbose output
curl -v https://api.example.com
# Trace (very detailed)
curl --trace - https://api.example.com
# Show only response headers
curl -I https://api.example.com
Version History
- e0220ca Current 2026-07-05 20:42


