欢迎光临
我们一直在努力

curl 发送第三方公益中转站请求

一、responses 接口和 chat/completions

chat/completions接口需要使用messages字段,否则报错:

{
"error": {
"message": "field messages is required",
"type": "new_api_error",
"code": "invalid_request"
}
}

1. 两个接口的请求格式不同

项目/v1/chat/completions/v1/responses
用户输入字段 messages input
消息格式 role + content 可以直接传字符串,也支持更复杂的输入结构

2. 如果报错

只需要把 input 改成 messages,其他参数基本不变。

Writing

curl -sS -N -i 'https://top/v1/chat/completions' \\
-H "Authorization: Bearer YOUR_API_KEY" \\
-H "Content-Type: application/json" \\
-d '{
"model": "gemini-3.1-pro",
"messages": [
{
"role": "user",
"content": "元音、辅音,用英语怎么说"
}
],
"stream": true
}'

这里的 YOUR_API_KEY 替换成你自己的 API Key。

3. 为什么之前的 Codex 请求又不一样?

正确的对应关系是:

/v1/chat/completions → messages
/v1/responses → input

二、 curl -sS -i 命令的-s、-S和-i选项

curl -sS -i 三个选项的具体作用

选项详解

选项全称作用详细说明
-s silent 安静模式 不显示进度条、下载速度、百分比等信息,让输出变得干净。
-S show-error 显示错误信息 必须和 -s 一起使用。如果只用 -s,curl 出错时会完全静默,什么都不输出。加上 -S 后,即使在安静模式下,出错也会显示错误提示。
-i include 包含 HTTP 响应头 在输出内容中同时显示 HTTP 响应头(Headers)和响应体(Body)。

组合含义总结

curl -sS -i 的完整意思是:

安静地发送请求,显示完整的 HTTP 响应头和响应体,如果出错则显示错误信息。

这是开发者、运维人员在写脚本或调试接口时非常常用的组合。


实际例子

curl -sS -i https://www.example.com

输出会是这样的格式:

HTTP/2 200
content-type: text/html; charset=UTF-8
date: …
server: …
cache-control: max-age=604800
…

<!doctype html>
<html>
<head>…


其他常用组合推荐

命令用途
curl -sS -i 显示响应头 + 响应体(最常用)
curl -sS -I 只显示响应头(不显示响应体)
curl -sS -o /dev/null -w "%{http_code}" 只返回 HTTP 状态码
curl -sS -L 跟随重定向(302/301)

  • -s = 安静模式(不显示进度)
  • -S = 配合 -s 使用,出错时显示错误
  • -i = 显示 HTTP 响应头

三者组合 curl -sS -i 是调试接口时非常经典的写法。

三、curl -N 选项

curl -N 详细说明

选项说明

选项全称作用
-N –no-buffer 关闭输出缓冲,数据一到就立刻显示,不等缓冲区满了再输出

什么是“缓冲”?

默认情况下,curl 会把接收到的数据先存在缓冲区,等积累到一定量后再一次性输出。

这对普通下载没问题,但对于实时数据流(比如 SSE、流式 API、实时日志)就会导致:

  • 数据明明已经到了,但屏幕上迟迟不显示
  • 看起来像“卡住了”
  • 要等很久才一次性刷出一大堆内容

加上 -N 后,curl 会关闭缓冲,数据一到就立刻显示在屏幕上。


最典型的使用场景

1. 调用 AI 流式 API(最常见)

curl -N -sS https://api.openai.com/v1/chat/completions \\
-H "Authorization: Bearer sk-xxx" \\
-H "Content-Type: application/json" \\
-d '{"model":"gpt-4o","stream":true,"messages":[{"role":"user","content":"hello"}]}'

  • 不加 -N:AI 的回复会攒一堆再显示
  • 加了 -N:AI 的回复会一个字一个字实时蹦出来(像打字机一样)

2. 查看实时日志

curl -N http://server/logs/stream

3. SSE(Server-Sent Events)

curl -N http://server/events


对比

命令效果
curl https://api.example.com/stream 数据会缓冲,等一会儿才显示
curl -N https://api.example.com/stream 数据实时显示,一到就输出

总结

curl -N = 关闭输出缓冲,让数据实时输出,不等缓冲区满。

最常用于调用流式 API(如 ChatGPT、Claude 等 AI 接口)时,让回复实时显示。

四、例一

curl -N https://w.cc/v1/responses -H "Authorization: Bearer sk-1111" -H "Content-Type: application/json" -d '{"model":"grok-4.7","input":"帮我解释c++的静态类型和动态类型,并举例","stream":true}'

也可以加 \\ :

curl -N https://w.cc/v1/responses \\
-H "Authorization: Bearer sk-111" \\
-H "Content-Type: application/json" \\
-d '{
"model": "grok-4.7",
"input": "字母a的ASCII编码值是多少?",
"stream": true
}'

五、例二

curl -N https://s.hk/v1/responses \\
-H "Authorization: Bearer sk-1111z" \\
-H "Content-Type: application/json" \\
-d '{
"model": "deepseek-v4.1-flash",
"input": "字母a的ASCII编码值是多少?帮我举例解释下c++的动态类型和静态类型",
"stream": true
}'

六、例三

curl -sS -N -i 'https://.top/v1/chat/completions' \\
-H "Authorization: Bearer sk-11" \\
-H "Content-Type: application/json" \\
-d '{
"model": "gemini-3.1-pro",
"messages":[{"role":"user","content":"元音、辅音,用英语怎么说"}],
"stream": true
}'

赞(0)
未经允许不得转载:171主机测评 » curl 发送第三方公益中转站请求
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址