技术博客
免费名言警句:多语言调用示例(Python / Java / Go / Node.js)

免费名言警句:多语言调用示例(Python / Java / Go / Node.js)

作者: 万维易源
2026-09-03
免费名言警句多语言调用PythonJavaGo
# 免费名言警句:多语言调用示例(Python / Java / Go / Node.js) > 接口 1839-1 · 免费 · 请求方式 POST/GET · 返回 JSON · 适用人群:多语言技术栈团队 · 阅读时间:约 5 分钟 ## 核心要点 - 接口是标准 HTTP + `application/x-www-form-urlencoded`,任何能发 HTTP 的语言都能调。 - 四个示例统一:超时 15 秒、判断 `ret_code != "0"` 视为失败、密钥用 `YOUR_APPKEY` 占位。 - 解析路径一致:取 `showapi_res_body.contentlist`,遍历 `content`。 ## Why 你的后端可能是 Java、Go,前端脚本用 Node.js,数据分析用 Python。无论哪种栈,调用方式都只是"拼 URL + 发表单"。本文给出四种语言的完整可运行片段,复制替换 AppKey 即可用,避免你再为不同语言重复踩坑。 ## What **接口速览** | 项 | 值 | |----|----| | 请求地址 | `https://route.showapi.com/1839-1` | | 方式 | GET(参数放 query)或 POST(表单)均可 | | 参数 | `appKey`(query)、`num`(表单/query,最多 10) | | 超时建议 | 15 秒(对齐官方 read/connect timeout) | ## How ### Python(requests) ```python import requests r = requests.get( "https://route.showapi.com/1839-1", params={"appKey": "YOUR_APPKEY", "num": "3"}, timeout=15, ) body = r.json()["showapi_res_body"] if body.get("ret_code") != "0": raise RuntimeError(body.get("remark")) for it in body["contentlist"]: print(it["content"]) ``` ### Java(java.net.http,JDK 11+) ```java import java.net.http.*; import java.net.URI; import java.time.Duration; public class Quotes { public static void main(String[] args) throws Exception { HttpRequest req = HttpRequest.newBuilder() .uri(URI.create("https://route.showapi.com/1839-1?appKey=YOUR_APPKEY&num=3")) .timeout(Duration.ofSeconds(15)) .GET().build(); HttpResponse<String> res = HttpClient.newHttpClient() .send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(res.body()); // 自行用 JSON 库解析 showapi_res_body.contentlist } } ``` ### Go ```go package main import ( "fmt" "io" "net/http" "time" ) func main() { client := &http.Client{Timeout: 15 * time.Second} url := "https://route.showapi.com/1839-1?appKey=YOUR_APPKEY&num=3" resp, err := client.Get(url) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) // 自行用 encoding/json 解析 showapi_res_body.contentlist } ``` ### Node.js(fetch) ```javascript const url = "https://route.showapi.com/1839-1?appKey=YOUR_APPKEY&num=3"; fetch(url, { signal: AbortSignal.timeout(15000) }) .then((r) => r.json()) .then((data) => { const body = data.showapi_res_body; if (body.ret_code !== "0") { console.error("接口错误:", body.remark); return; } body.contentlist.forEach((it) => console.log(it.content)); }) .catch((e) => console.error("请求失败:", e)); ``` ## 返回示例与解析 ```json { "showapi_res_body": { "ret_code": "0", "remark": "查询成功!", "contentlist": [ { "content": "德盛者威广,力盛者骄众。齐桓公尚德以霸,秦二世尚刑而亡。——陆贾" } ] } } ``` 各语言取到 JSON 后,统一取 `showapi_res_body` → 判断 `ret_code == "0"` → 遍历 `contentlist[].content`。 ## 进阶 / 边界 - `ret_code` 是字符串 `"0"`,JSON 解析后比较请用字符串而非整数。 - 生产环境建议加**指数退避重试**(仅对网络错误,不对业务错误码重试)。 - 免费档位有限,多语言服务共享同一 AppKey 的额度,注意统一缓存(见缓存策略篇)。 ## FAQ **Q1:GET 和 POST 有区别吗?** A:接口两者都支持,业务结果一致;参数在 GET 放 query、POST 放表单均可。 **Q2:超时设多少合适?** A:官方连接/读取超时均为 15 秒,客户端建议对齐设 15 秒,避免长阻塞。 **Q3:返回中文乱码怎么办?** A:响应为 UTF-8 JSON,确保解析库以 UTF-8 读取;Node/Java/Go 默认 UTF-8,Python `r.json()` 自动处理。 **Q4:能并发调用吗?** A:可以,但免费档位有限,高并发请配合缓存与限流(见缓存策略篇)。 ## 相关能力 / 下一步阅读 - [免费名言警句:5 分钟接入,从注册到第一条名言](https://www.showapi.com/guides/famous-quotes-quickstart-1839) - [免费名言警句:如何设计缓存策略,避免重复调用浪费免费档位](https://www.showapi.com/guides/famous-quotes-cache-1839) - [免费名言警句:返回字段全解(contentlist / ret_code / allNum)](https://www.showapi.com/guides/famous-quotes-response-fields-1839) - **本系列共 10 篇**:查看[免费名言警句指南总目录](https://www.showapi.com/guides/famous-quotes-guides-1839)