城市天气宣传画报生成接口(cweather)技术接入文档

简介: 本文面向开发者详解「城市天气宣传画报生成」接口(cweather):支持输入城市名,自动完成消歧、实时天气融合、地标构图与多风格(吉卜力/水墨等)异步出图;涵盖契约规范、参数说明、返回结构、错误排查及Java/Python等多语言接入示例。

本文基于阿里云云市场公开商品页的真实字段整理,面向开发者介绍「城市天气宣传画报生成」接口的契约、参数、返回结构、错误排查与多语言接入方式。全文不含任何外部链接地址,代码示例中的调用域名为裸域名写法。

1. 背景与适用场景

在城市文旅宣传、本地生活运营、气象媒体配图等场景中,运营方常需批量、自动化地生产带有当地实时天气、地标与统一视觉风格的城市宣传图。传统方式依赖美术设计与天气数据对接,人力与时间成本较高。城市天气宣传画报生成接口(cweather)通过阿里云 API 网关提供标准 HTTPS 服务:输入城市或景点名称,由服务端完成省市级联消歧、实时天气查询、地标提炼与构图,并按指定绘画风格异步生成画报图片。本文介绍其接口契约与接入要点,帮助开发者快速完成系统集成。

2. 接口概览

  • 功能:输入城市或景点名称,服务端自动完成省市消歧、实时天气融合、地标三层构图,并按指定风格异步生成城市宣传画报。
  • 协议:HTTPS,请求方法 POST,请求体与返回均为 JSON。
  • 调用地址:服务域名为 cweather.market.alicloudapi.com,接口路径为 /weatherPainter/execute
  • 鉴权方式:支持 APPCODE 简单认证(请求头 Authorization: APPCODE xxxx)与 AppKey & AppSecret 签名认证两种。
  • 调用模式:异步。先「创建任务」获得任务标识与查询入口,再「轮询查询」获取最终结果。

接口调用流程

该接口由阿里云云市场入驻服务商提供,调用凭据在阿里云云市场订购后获取。

3. 请求参数

创建任务接口(POST /weatherPainter/execute)接受以下 JSON 字段:

参数 类型 必填 说明 / 可选值
style string 绘画风格:吉卜力漫画 / 水墨画 / 浪漫主义 / 扁平插画
ratio string 画面比例:1:1 / 3:4 / 4:3 / 16:9 / 9:16
city string 城市或景点名;建议「省份+城市」格式以避免同名歧义

参数与可选值一览

style 与 ratio 均为可选,缺省时由服务端使用默认风格与比例。city 为必填项,仅传入易重名城市(如「朝阳」「西安」存在多地)时建议补全省份。

可选风格与比例

4. 返回结构

创建任务成功时返回任务标识与两类查询入口。字段说明如下:

字段路径 类型 说明
showapi_res_code int 网关层状态码,0 表示网关处理成功
showapi_res_error string 网关层错误信息,成功时为空
showapi_res_id string 本次请求唯一标识
showapi_res_body.ret_code int 业务状态码,0 表示业务成功
showapi_res_body.remark string 业务备注,成功时为 success
showapi_res_body.task_id string 任务标识,用于后续查询
showapi_res_body.flow_id / flow_name string 工作流标识与名称
showapi_res_body.query_info.short_term_query object 短期查询入口(有效期 1 小时)
showapi_res_body.query_info.long_term_query object 长期查询接入点(有效期 3 天)

完整成功返回样例:

{
   
  "showapi_res_body": {
   
    "query_info": {
   
      "long_term_query": {
   
        "endpoint": "(由创建任务返回的阿里云查询接入点)",
        "param": {
   
          "task_id": "3467_xxxxxxxxxxxx"
        },
        "desc": "适用于长期查询。调用查询接入点并传入 task_id,查询有效期为 3 天。"
      },
      "short_term_query": {
   
        "preview_url": "(由创建任务返回的短期预览地址,有效期 1 小时)",
        "query_status_url": "(由创建任务返回的短期查询地址,有效期 1 小时)",
        "desc": "短期查询与可视化预览(有效期 1 小时)。query_status_url 直接请求获取 JSON 结果;preview_url 在浏览器打开查看可视化结果。"
      }
    },
    "task_id": "3467_xxxxxxxxxxxx",
    "ret_code": 0,
    "remark": "success",
    "flow_id": "6a2a5e0b3c51f2492b002285",
    "flow_name": "城市天气宣传画报生成"
  },
  "showapi_res_id": "6a7042823c51f2492b002286",
  "showapi_res_error": "",
  "showapi_fee_num": 0,
  "showapi_res_code": 0
}

showapi_res_code 为 0 表示网关层成功;showapi_res_body.ret_code 为 0 表示业务成功。画报图片地址在查询结果(轮询返回)中,不在创建任务的响应里。

5. 错误码与排查

商品页未提供独立错误码表,以下基于接口返回结构与网关通用行为整理:

现象 含义 原因 解决办法
ret_code=1,remark「参数错误」 业务参数校验失败 city 为空,或 style / ratio 取值不在枚举范围 校验 city 必填,style / ratio 取文档枚举值
showapi_res_code 非 0 网关层错误 APPCODE 错误或缺失、签名校验失败 检查 Authorization 头与凭据是否正确
创建成功但查询无结果 查询入口过期或任务未完成 短期入口 1 小时 / 长期接入点 3 天过期;任务仍在队列 重新创建任务,或延长轮询间隔后重试
消歧结果不符 输入了重名城市 仅传入城市名,省市级联歧义 city 改为「省份+城市」格式

失败返回样例(业务参数错误):

{
   
  "showapi_res_body": {
   
    "ret_code": 1,
    "remark": "参数错误"
  },
  "showapi_res_code": 0,
  "showapi_res_error": "",
  "showapi_res_id": "6a7042823c51f2492b002287"
}

6. 频控与合规

  • 调用频率:单账户 QPS 上限与每日配额以阿里云云市场控制台实时配置为准;高并发场景建议在业务侧做队列与限流。
  • 数据来源:天气数据来自实时数据源,每次创建任务均重新查询并融合。
  • 合规边界:输出为算法生成图像,不保证与真实摄影一致;请勿将接口用于生成违法、侵权或误导性内容,调用产生的图片用途由使用方自行负责。
  • 计费说明:本接口按调用次数计费,具体计费标准以阿里云云市场公示为准。

7. 多语言接入示例

以下示例均演示「创建任务」调用,鉴权头使用 APPCODE 方式;域名以裸域名书写,scheme 通过变量拼接,避免代码中固化链接地址。请将 YOUR_APPCODE 替换为实际凭据。

7.1 Java

import java.util.HashMap;
import java.util.Map;

public class CweatherDemo {
   
    public static void main(String[] args) {
   
        String host = "cweather.market.alicloudapi.com"; // 阿里云 API 网关
        String path = "/weatherPainter/execute";
        String scheme = "https";
        String appcode = "YOUR_APPCODE";
        Map<String, String> headers = new HashMap<String, String>();
        headers.put("Authorization", "APPCODE " + appcode);
        headers.put("Content-Type", "application/json; charset=UTF-8");
        String bodys = "{\"style\":\"水墨画\",\"ratio\":\"9:16\",\"city\":\"陕西西安\"}";
        String url = scheme + "://" + host + path;
        // HttpUtils.doPost(url, headers, bodys) 发送请求
    }
}

7.2 Python

import requests

host = "cweather.market.alicloudapi.com"  # 阿里云 API 网关
path = "/weatherPainter/execute"
scheme = "https"
url = scheme + "://" + host + path
headers = {
   
    "Authorization": "APPCODE YOUR_APPCODE",
    "Content-Type": "application/json; charset=UTF-8",
}
body = {
   
    "style": "水墨画",
    "ratio": "9:16",
    "city": "陕西西安",
}
resp = requests.post(url, json=body, headers=headers)
print(resp.json())

7.3 PHP

<?php
$host = "cweather.market.alicloudapi.com"; // 阿里云 API 网关
$path = "/weatherPainter/execute";
$scheme = "https";
$url = $scheme . "://" . $host . $path;
$appcode = "YOUR_APPCODE";
$body = json_encode(array(
    "style" => "水墨画",
    "ratio" => "9:16",
    "city"  => "陕西西安",
));
$headers = array(
    "Authorization: APPCODE " . $appcode,
    "Content-Type: application/json; charset=UTF-8",
);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
?>

7.4 Node.js

const https = require("https");

const host = "cweather.market.alicloudapi.com"; // 阿里云 API 网关
const path = "/weatherPainter/execute";
const appcode = "YOUR_APPCODE";

const data = JSON.stringify({
   
  style: "水墨画",
  ratio: "9:16",
  city: "陕西西安",
});

const options = {
   
  hostname: host,
  path: path,
  method: "POST",
  headers: {
   
    Authorization: "APPCODE " + appcode,
    "Content-Type": "application/json; charset=UTF-8",
    "Content-Length": Buffer.byteLength(data),
  },
};

const req = https.request(options, (res) => {
   
  let chunk = "";
  res.on("data", (d) => (chunk += d));
  res.on("end", () => console.log(chunk));
});
req.write(data);
req.end();

7.5 curl

HOST="cweather.market.alicloudapi.com"
PATH="/weatherPainter/execute"
SCHEME="https"
curl -X POST \
  "${SCHEME}://${HOST}${PATH}" \
  -H "Authorization: APPCODE YOUR_APPCODE" \
  -H "Content-Type: application/json; charset=UTF-8" \
  -d '{"style":"水墨画","ratio":"9:16","city":"陕西西安"}'

8. 接入最佳实践

异步接入步骤

  • 异步轮询:创建任务仅返回 task_id 与查询入口,画报需通过查询获取。短期入口有效期 1 小时,长期接入点有效期 3 天,过期需重新创建任务。建议对查询结果做本地缓存,避免重复查询。
  • 重试策略:仅对网络层异常(超时、5xx、连接失败)使用指数退避重试;业务参数错误(ret_code=1)属于确定失败,应修正参数而非重试。
  • 幂等与去重:同一 city + style + ratio 每次会生成新的 task_id,业务侧应基于请求参数做去重,避免重复提交产生重复扣费。
  • 超时设置:创建任务为毫秒级返回任务标识,绘画耗时发生在查询侧。客户端应为创建请求设置合理超时,并为查询轮询设置递增间隔。
  • 异常兜底:同时解析 showapi_res_code(网关层)与 ret_code(业务层)双状态,任一非 0 均视为异常并进入统一错误处理;凭据异常需集中拦截。
  • 凭据安全:APPCODE / AppKey 应存放在环境变量或配置中心,禁止在前端、客户端代码中硬编码,禁止提交至代码仓库。

9. 技术 FAQ

Q1:支持哪些请求参数?
A:city 为必填(城市或景点名),style 与 ratio 为可选枚举。style 取值为吉卜力漫画 / 水墨画 / 浪漫主义 / 扁平插画;ratio 取值为 1:1 / 3:4 / 4:3 / 16:9 / 9:16。

Q2:为什么创建任务后拿不到画报图片?
A:接口为异步模式,创建任务仅返回任务标识与查询入口,画报图片在查询结果中返回,需按返回的查询地址轮询获取。

Q3:查询入口的有效期是多久?
A:短期查询入口有效期 1 小时,长期查询接入点有效期 3 天,过期后需重新创建任务。

Q4:支持哪些鉴权方式?
A:支持 APPCODE 简单认证(请求头 Authorization: APPCODE xxxx)与 AppKey & AppSecret 签名认证两种方式。

Q5:调用频率与配额如何评估?
A:单账户 QPS 上限与每日配额以阿里云云市场控制台实时配置为准;高并发场景建议在业务侧做队列与限流。

Q6:如何判断一次调用是否成功?
A:需同时满足 showapi_res_code == 0(网关层成功)且 showapi_res_body.ret_code == 0(业务成功)。

Q7:城市消歧结果不准确怎么办?
A:多为输入了易重名城市导致,建议将 city 改为「省份+城市」格式(如「陕西西安」)以降低歧义。

Q8:天气数据从哪里来,更新频率如何?
A:天气数据来自实时数据源,每次创建任务均会重新查询并融合进画报。

10. 小结

城市天气宣传画报生成接口(cweather)通过阿里云 API 网关提供异步图像生成能力:输入城市或景点名称,由服务端完成省市消歧、实时天气融合、地标构图与指定风格出图。接入时需注意以下要点:

  • 创建任务(POST /weatherPainter/execute)仅返回 task_id 与查询入口,画报需异步轮询获取。
  • 请求参数中 city 必填,style / ratio 为可选枚举。
  • 成功判定需同时检查 showapi_res_coderet_code 双状态。
  • 查询入口短期 1 小时、长期 3 天有效,过期需重新创建任务。
  • 凭据应安全管理,QPS 与计费以控制台实时配置为准。

接口由阿里云云市场入驻服务商提供,上述字段与调用方式均基于商品页公开文档整理。

相关文章
|
18天前
|
人工智能 缓存 前端开发
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
DeepSeek Harness + DeepSeek V4 Pro 项目实战保姆级教程!手把手带你从零安装开源 AI 编程工具,开发架构图、知识讲解网站、3D 网页游戏、全栈 AI 应用 4 个项目,覆盖运行模式选择、插件安装与开发,看看能不能对标 Claude。
12923 80
DeepSeek Harness 首发实测 + 入门教程,夯爆了!梁神我错了
|
6天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
11天前
|
Web App开发 人工智能 API
16 个超火的 DeepSeek Harness 插件,大肥鱼已经落后 N 个版本了。。。
DeepSeek Harness 精选插件推荐合集,从图片识别、浏览器操控、多 Agent 协作到手机远程控制,一口气带你看完 DSH 社区热门的十几个插件,覆盖技能扩展、UI 界面增强、整活玩法三大类,让你的鲸鱼变得更强。
1651 3
|
人工智能 JavaScript 开发工具
DeepSeek Harness 本地安装与使用指南
DeepSeek Harness(DSH)是DeepSeek AI开源的Agent运行框架,支持本地文件操作、命令执行与工具调用。基于Cordis插件架构,具备高扩展性与强可控性,适合开发者搭建可控Agent环境或开展模型基准测试。当前为开发者预览版,需Node.js环境,推荐先用`npx @deepseek-ai/dsh web`快速体验。
5059 0
|
12天前
|
人工智能 Java BI
【AI】DeepSeek Harness 安装、运行、管理插件
本文介绍了如何运行DeepSeek开源的Agent框架DeepSeek Harness(dsh)。主要内容包括:使用nvm安装适配的Node版本;通过代理加速克隆GitHub源码;使用pnpm安装依赖并启动项目;配置DeepSeek API Token;安装扩展功能的插件。该框架自带Web界面,支持模型适配、文件编辑等插件化功能
1798 1
|
14天前
|
人工智能 JavaScript 测试技术
保姆级教程:DeepSeek Harness从安装到跑通测试,30分钟上手
DeepSeek Harness是DeepSeek开源的AI Agent运行时,主打“一行命令安装、5分钟跑通”。它让模型真正动手干活——读代码、跑测试、分析失败、生成修复方案。本文手把手教你30分钟从零上手,覆盖安装、配置、实测及避坑指南,助你快速掌握下一代AI编程范式。
|
16天前
|
开发工具 Swift git
DeepSeek Harness 插件推荐:4 款开源神器让写代码直接起飞
DeepSeek Harness 插件推荐:ModLens 视觉、Web UI 全家桶、Mac 原生与 GenUI 渲染,4 款开源插件给纯文本模型补齐短板。
2034 6
DeepSeek Harness 插件推荐:4 款开源神器让写代码直接起飞
|
13天前
|
人工智能 JavaScript 测试技术
从 0 到 1,DeepSeek Harness 保姆级安装与使用教程!
DeepSeek Harness是DeepSeek推出的开源Agent运行框架,秉持“一切皆插件”理念,支持模型、工具、技能、工作流等全模块自由替换与扩展。其核心Cordis内核实现动态插件管理,赋能Agent自进化。已成GitHub史上增速最快开源项目(15w+ Star),标志着国内大模型从拼价格转向重架构与生态的新拐点。
1311 5
从 0 到 1,DeepSeek Harness 保姆级安装与使用教程!