上一篇 下一篇 分享链接 返回 返回顶部

Debian 调用 API 实战指南:curl、HTTPie、Python 命令一次搞定

发布人:慈云数据-客服中心 发布时间:14小时前 阅读量:4

Debian API接口调用教程|附完整命令

在 Debian 系统中调用 API 接口,是服务器运维、后端开发、自动化脚本、数据采集和系统集成中非常常见的操作。无论你是想调用第三方 REST API,还是测试自己部署的后端服务,Debian 都提供了非常稳定、灵活的环境。

本文将以 Debian 系统为基础,详细介绍如何使用 curlwgetHTTPiePythonShell 脚本 等方式调用 API 接口,并附带完整命令示例,适合新手学习,也适合开发者作为日常参考。


一、什么是 API 接口调用?

API,全称是 Application Programming Interface,即应用程序编程接口。简单来说,API 就是不同软件系统之间进行数据交互的通道。

例如:

  • 你想查询天气数据,可以调用天气 API;
  • 你想获取服务器状态,可以调用监控系统 API;
  • 你想让前端页面获取后端数据,可以调用后端 REST API;
  • 你想自动上传文件、发送消息、创建订单,也可以通过 API 完成。

常见的 API 请求方式包括:

请求方法 说明
GET 获取数据
POST 提交数据
PUT 更新完整数据
PATCH 更新部分数据
DELETE 删除数据

常见的数据格式包括:

  • JSON
  • XML
  • Form 表单
  • 文件流
  • URL 参数

在 Debian 中,最常用的 API 调用工具是 curl


二、准备 Debian 环境

本文命令适用于 Debian 10、Debian 11、Debian 12 及以上版本。

首先更新软件源:

sudo apt update

建议同时升级系统软件包:

sudo apt upgrade -y

查看 Debian 版本:

cat /etc/debian_version

或:

lsb_release -a

如果系统没有 lsb_release 命令,可以安装:

sudo apt install lsb-release -y

三、安装常用 API 调用工具

1. 安装 curl

curl 是 Linux 下最常用的接口调用工具,可以发送 GET、POST、PUT、DELETE 等各种 HTTP 请求。

安装命令:

sudo apt install curl -y

查看版本:

curl --version

如果能够看到版本信息,说明安装成功。


2. 安装 wget

wget 也可以访问接口,不过它更多用于下载文件。

安装命令:

sudo apt install wget -y

查看版本:

wget --version

3. 安装 HTTPie

HTTPie 是一个更适合人类阅读的命令行 HTTP 客户端,输出结果更美观。

安装命令:

sudo apt install httpie -y

查看版本:

http --version

4. 安装 jq

如果 API 返回 JSON 数据,建议安装 jq,用于格式化和解析 JSON。

安装命令:

sudo apt install jq -y

查看版本:

jq --version

四、使用 curl 调用 GET 接口

GET 请求通常用于获取数据。

假设我们调用一个测试接口:

curl https://httpbin.org/get

如果想显示更详细的请求过程,可以加上 -v 参数:

curl -v https://httpbin.org/get

如果想让 JSON 输出更加美观,可以结合 jq

curl -s https://httpbin.org/get | jq

其中:

  • -s 表示静默模式,不显示进度条;
  • jq 用于格式化 JSON 输出。

五、GET 请求携带参数

GET 请求参数通常拼接在 URL 后面,例如:

curl "https://httpbin.org/get?name=debian&version=12"

注意:URL 中如果包含 &,建议使用引号包裹,否则 Shell 可能会将其识别为后台执行符号。

也可以使用 --get--data-urlencode 自动编码参数:

curl -G "https://httpbin.org/get" \
  --data-urlencode "name=debian" \
  --data-urlencode "version=12" \
  --data-urlencode "keyword=API 接口调用"

这种方式适合参数中包含中文、空格或特殊字符的情况。


六、使用 curl 调用 POST JSON 接口

POST 请求通常用于提交数据。最常见的是提交 JSON 数据。

完整命令如下:

curl -X POST "https://httpbin.org/post" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"123456"}'

参数说明:

  • -X POST:指定请求方法为 POST;
  • -H:设置请求头;
  • Content-Type: application/json:表示提交的数据格式是 JSON;
  • -d:提交请求体数据。

为了让输出更清晰,可以加上 jq

curl -s -X POST "https://httpbin.org/post" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"123456"}' | jq

七、POST 表单接口调用

有些接口不是接收 JSON,而是接收表单数据,也就是 application/x-www-form-urlencoded

示例命令:

curl -X POST "https://httpbin.org/post" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "username=admin&password=123456"

也可以写成多个 -d 参数:

curl -X POST "https://httpbin.org/post" \
  -d "username=admin" \
  -d "password=123456"

这种方式常用于传统 Web 表单、登录接口或旧系统接口。


八、携带 Token 调用 API

很多 API 都需要身份认证,最常见的是 Token 认证。

例如接口要求在请求头中携带 Bearer Token:

curl "https://api.example.com/user/info" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

如果是 POST 请求:

curl -X POST "https://api.example.com/order/create" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"product_id":1001,"quantity":2}'

为了安全,不建议直接把 Token 写死在命令中,可以使用环境变量:

export API_TOKEN="YOUR_ACCESS_TOKEN"

然后调用:

curl "https://api.example.com/user/info" \
  -H "Authorization: Bearer ${API_TOKEN}"

查看环境变量:

echo $API_TOKEN

如果想取消:

unset API_TOKEN

九、Basic Auth 接口调用

部分接口使用 Basic Auth,也就是用户名和密码认证。

命令如下:

curl -u "username:password" "https://httpbin.org/basic-auth/username/password"

如果用户名是 admin,密码是 123456,示例:

curl -u "admin:123456" "https://api.example.com/private/data"

如果想查看完整响应头:

curl -i -u "admin:123456" "https://api.example.com/private/data"

其中 -i 表示同时输出响应头和响应体。


十、查看响应状态码

调用 API 时,除了响应内容,还需要关注 HTTP 状态码。

常见状态码如下:

状态码 含义
200 请求成功
201 创建成功
204 成功但无返回内容
400 请求参数错误
401 未认证
403 无权限
404 接口不存在
500 服务器内部错误

只输出状态码:

curl -o /dev/null -s -w "%{http_code}\n" "https://httpbin.org/get"

同时输出状态码和耗时:

curl -o /dev/null -s -w "状态码: %{http_code}\n总耗时: %{time_total}s\n" "https://httpbin.org/get"

查看更多连接信息:

curl -o /dev/null -s -w "DNS解析: %{time_namelookup}s\n连接耗时: %{time_connect}s\nTLS握手: %{time_appconnect}s\n首字节时间: %{time_starttransfer}s\n总耗时: %{time_total}s\n状态码: %{http_code}\n" "https://httpbin.org/get"

十一、保存 API 返回结果

将接口返回结果保存为文件:

curl -o result.json "https://httpbin.org/get"

静默保存:

curl -s -o result.json "https://httpbin.org/get"

保存并格式化 JSON:

curl -s "https://httpbin.org/get" | jq > result.json

查看文件:

cat result.json

格式化查看:

jq . result.json

十二、上传文件接口调用

很多接口支持文件上传,例如上传图片、日志或配置文件。

创建测试文件:

echo "Hello Debian API" > test.txt

使用 multipart/form-data 上传:

curl -X POST "https://httpbin.org/post" \
  -F "file=@test.txt" \
  -F "description=Debian 文件上传测试"

如果需要携带 Token:

curl -X POST "https://api.example.com/upload" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -F "file=@test.txt"

上传图片示例:

curl -X POST "https://api.example.com/image/upload" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -F "image=@/path/to/image.jpg"

十三、下载文件接口调用

如果 API 返回的是文件,可以使用 curl -O-o 下载。

保留远程文件名:

curl -O "https://example.com/file.zip"

指定本地文件名:

curl -o download.zip "https://example.com/file.zip"

断点续传:

curl -C - -O "https://example.com/file.zip"

使用 wget 下载:

wget "https://example.com/file.zip"

指定文件名:

wget -O download.zip "https://example.com/file.zip"

十四、PUT、PATCH、DELETE 接口调用

1. PUT 请求

PUT 通常用于完整更新资源:

curl -X PUT "https://httpbin.org/put" \
  -H "Content-Type: application/json" \
  -d '{"id":1,"name":"Debian 12","status":"active"}'

2. PATCH 请求

PATCH 通常用于局部更新资源:

curl -X PATCH "https://httpbin.org/patch" \
  -H "Content-Type: application/json" \
  -d '{"status":"disabled"}'

3. DELETE 请求

DELETE 用于删除资源:

curl -X DELETE "https://httpbin.org/delete?id=1001"

携带 Token 的 DELETE 请求:

curl -X DELETE "https://api.example.com/users/1001" \
  -H "Authorization: Bearer ${API_TOKEN}"

十五、使用 HTTPie 调用 API

如果你觉得 curl 参数较多,可以使用 HTTPie。

GET 请求:

http GET https://httpbin.org/get

GET 携带参数:

http GET https://httpbin.org/get name==debian version==12

注意 HTTPie 中:

  • name==debian 表示 URL 查询参数;
  • name=debian 表示请求体字段。

POST JSON 请求:

http POST https://httpbin.org/post username=admin password=123456

携带请求头:

http GET https://api.example.com/user/info Authorization:"Bearer ${API_TOKEN}"

POST 携带 Token:

http POST https://api.example.com/order/create \
  Authorization:"Bearer ${API_TOKEN}" \
  product_id:=1001 quantity:=2

其中 := 表示数字或布尔类型,不会被当成字符串。


十六、使用 Python 调用 API

在 Debian 中,Python 也非常适合调用 API,尤其适合写自动化脚本。

安装 Python 和 pip:

sudo apt install python3 python3-pip -y

安装 requests 库:

pip3 install requests

如果系统提示不允许全局安装,可以使用虚拟环境:

sudo apt install python3-venv -y
python3 -m venv api-env
source api-env/bin/activate
pip install requests

创建 Python 文件:

nano call_api.py

写入以下内容:

import requests

url = "https://httpbin.org/post"

headers = {
    "Content-Type": "application/json"
}

data = {
    "username": "admin",
    "password": "123456"
}

response = requests.post(url, headers=headers, json=data)

print("状态码:", response.status_code)
print("响应内容:")
print(response.text)

执行脚本:

python3 call_api.py

如果要格式化 JSON:

import requests
import json

url = "https://httpbin.org/get"

response = requests.get(url)

print(json.dumps(response.json(), indent=2, ensure_ascii=False))

十七、编写 Shell 脚本批量调用 API

如果需要定时调用接口,可以写 Shell 脚本。

创建脚本:

nano call_api.sh

写入内容:

#!/bin/bash

API_URL="https://httpbin.org/post"
API_TOKEN="YOUR_ACCESS_TOKEN"

RESPONSE=$(curl -s -X POST "$API_URL" \
  -H "Authorization: Bearer ${API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"server":"debian","status":"ok"}')

echo "接口返回:"
echo "$RESPONSE" | jq

添加执行权限:

chmod +x call_api.sh

运行脚本:

./call_api.sh

如果要把调用日志保存下来:

./call_api.sh >> api.log 2>&1

查看日志:

tail -f api.log

十八、设置定时任务调用 API

Debian 中可以使用 cron 定时调用 API。

编辑定时任务:

crontab -e

每分钟调用一次脚本:

* * * * * /home/debian/call_api.sh >> /home/debian/api-cron.log 2>&1

每天凌晨 2 点调用一次:

0 2 * * * /home/debian/call_api.sh >> /home/debian/api-cron.log 2>&1

查看当前定时任务:

crontab -l

查看 cron 服务状态:

systemctl status cron

启动 cron:

sudo systemctl start cron

设置开机自启:

sudo systemctl enable cron

十九、常见问题与排查方法

1. 接口无法访问

先测试网络:

ping api.example.com

测试端口连通性:

nc -vz api.example.com 443

如果没有 nc 命令,安装:

sudo apt install netcat-openbsd -y

2. HTTPS 证书报错

如果遇到证书问题,可以先确认系统证书包:

sudo apt install ca-certificates -y
sudo update-ca-certificates

不推荐但可临时跳过证书验证:

curl -k https://api.example.com

注意:生产环境不建议使用 -k,因为会降低安全性。


3. JSON 格式错误

可以使用 jq 检查 JSON:

echo '{"name":"debian"}' | jq

如果 JSON 格式错误,jq 会提示解析失败。


4. 接口超时

设置最大超时时间:

curl --max-time 10 "https://api.example.com/data"

设置连接超时时间:

curl --connect-timeout 5 "https://api.example.com/data"

5. 查看请求详情

使用 -v 查看详细请求过程:

curl -v "https://httpbin.org/get"

只查看响应头:

curl -I "https://httpbin.org/get"

输出请求和响应详细调试信息:

curl --trace-ascii debug.log "https://httpbin.org/get"

查看调试日志:

cat debug.log

二十、安全建议

在 Debian 中调用 API 时,建议注意以下几点:

  1. 不要把 Token、密码写死在脚本中,尽量使用环境变量或配置文件;
  2. 不要在公共终端中直接输入敏感信息,命令历史可能会保存;
  3. 生产环境不要使用 curl -k,应正确配置 HTTPS 证书;
  4. 为 API 设置超时时间,避免脚本长期阻塞;
  5. 记录日志时避免输出敏感数据
  6. 使用最小权限 Token,不要给自动化脚本配置过高权限;
  7. 定期轮换密钥和 Token

如果担心命令历史泄露 Token,可以清理历史:

history -c

或删除历史文件:

rm -f ~/.bash_history

也可以在命令前加一个空格,并确保 Bash 启用了忽略空格历史记录:

export HISTCONTROL=ignorespace

二十一、完整实战示例:登录后调用用户信息接口

下面给出一个完整流程示例:先调用登录接口获取 Token,再使用 Token 调用用户信息接口。

创建脚本:

nano api_login_demo.sh

写入内容:

#!/bin/bash

LOGIN_URL="https://api.example.com/login"
USER_INFO_URL="https://api.example.com/user/info"

USERNAME="admin"
PASSWORD="123456"

TOKEN=$(curl -s -X POST "$LOGIN_URL" \
  -H "Content-Type: application/json" \
  -d "{\"username\":\"${USERNAME}\",\"password\":\"${PASSWORD}\"}" \
  | jq -r '.token')

if [ -z "$TOKEN" ] || [ "$TOKEN" = "null" ]; then
  echo "登录失败,未获取到 Token"
  exit 1
fi

echo "Token 获取成功"

curl -s "$USER_INFO_URL" \
  -H "Authorization: Bearer ${TOKEN}" \
  | jq

添加执行权限:

chmod +x api_login_demo.sh

运行:

./api_login_demo.sh

这个脚本适合改造成自动化任务,例如定时查询账户信息、同步数据或触发远程任务。


总结

在 Debian 中调用 API 接口并不复杂,核心工具主要是 curljqHTTPiePython requests。其中:

  • 临时测试接口,推荐使用 curl
  • 需要美观输出,推荐使用 HTTPie
  • 需要解析 JSON,推荐使用 jq
  • 需要复杂逻辑或批量处理,推荐使用 Python;
  • 需要定时执行,推荐结合 Shell 脚本和 cron。

掌握这些命令后,你就可以在 Debian 服务器上完成接口测试、自动化运维、数据同步、文件上传下载、监控告警等大量实际工作。

目录结构
全文