×
¥
查看详情
🔥 会员专享 文生代码 开发

API交互代码生成

👁️ 510 次查看
📅 Nov 19, 2025
💡 核心价值: 该提示词用于根据用户输入的语言、API名称、目标操作、关键参数与认证方式,生成结构清晰、可直接运行的API交互代码。模板强调可控与可复现,所有代码均依赖用户显式输入的数据,不自动抓取外部信息。适用于构建第三方服务集成、内部系统对接或自动化脚本开发,帮助开发者快速完成多语言、多认证机制的API请求代码编写。

🎯 可自定义参数(5个)

编程语言
编写API交互代码所使用的编程语言
API名称与说明
需要交互的API名称及其功能说明
目标操作描述
通过API交互需要实现的具体操作目标
认证方式
API请求中使用的认证方式
关键请求参数
API请求中需要包含的关键参数信息

🎨 效果示例

// Node.js 18+ required (for global fetch and AbortController)

const BASE_URL = 'https://api.morningweather.example'; const ENDPOINT = '/v1/forecast/daily';

// Authentication const API_KEY = 'YOUR_API_KEY_HERE'; // 请替换为你的实际API Key

// Query parameters const CITY = '苏州'; const COUNTRY_CODE = 'CN'; const DAYS = 7; const UNITS = 'metric'; // metric => 摄氏度 const LANG = 'zh-CN';

// Timeout and retry settings const TIMEOUT_MS = 5000; const MAX_ATTEMPTS = 3; const BACKOFF_MS = [200, 400, 800]; const RETRY_ON_STATUS = new Set([429, 500, 502, 503, 504]);

function buildUrl(base, endpoint, query) { const url = new URL(endpoint, base); Object.entries(query).forEach(([k, v]) => { if (v !== undefined && v !== null) url.searchParams.set(k, String(v)); }); return url.toString(); }

function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); }

async function fetchWithRetry(url, options) { let lastError; for (let attempt = 1; attempt <= MAX_ATTEMPTS; attempt++) { const controller = new AbortController(); const timeoutId = setTimeout(() => controller.abort(), TIMEOUT_MS);

try {
  const res = await fetch(url, {
    ...options,
    signal: controller.signal,
  });
  clearTimeout(timeoutId);

  if (!res.ok) {
    const shouldRetry = RETRY_ON_STATUS.has(res.status) && attempt < MAX_ATTEMPTS;
    if (!shouldRetry) {
      let bodyText = '';
      try { bodyText = await res.text(); } catch {}
      const message = `HTTP ${res.status} ${res.statusText}${bodyText ? ` - ${bodyText}` : ''}`;
      throw new Error(message);
    }
    const backoff = BACKOFF_MS[Math.min(attempt - 1, BACKOFF_MS.length - 1)];
    await sleep(backoff);
    continue;
  }

  // Try to parse JSON
  const data = await res.json();
  return data;
} catch (err) {
  clearTimeout(timeoutId);
  lastError = err;

  const isAbort = err && (err.name === 'AbortError');
  const isNetwork = err && (err.code === 'ECONNRESET' || err.code === 'ENOTFOUND' || err.code === 'EAI_AGAIN');
  const canRetry = attempt < MAX_ATTEMPTS;

  if (canRetry && (isAbort || isNetwork)) {
    const backoff = BACKOFF_MS[Math.min(attempt - 1, BACKOFF_MS.length - 1)];
    await sleep(backoff);
    continue;
  }

  break;
}

} throw lastError; }

function pad(n) { return n < 10 ? 0${n} : ${n}; }

function formatDate(input) { if (typeof input === 'string') { const m = input.match(/^\d{4}-\d{2}-\d{2}/); if (m) return m[0]; const d = new Date(input); if (!isNaN(d)) return ${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}; return input; } if (typeof input === 'number') { // Heuristic: if seconds timestamp, multiply; if ms, use directly const d = new Date(input < 1e12 ? input * 1000 : input); if (!isNaN(d)) return ${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}; } if (input instanceof Date && !isNaN(input)) { return ${input.getFullYear()}-${pad(input.getMonth() + 1)}-${pad(input.getDate())}; } return String(input); }

function toFixedMaybe(num, digits = 1) { if (typeof num !== 'number') return String(num); if (!isFinite(num)) return String(num); return num.toFixed(digits); }

async function main() { if (typeof fetch !== 'function') { console.error('错误:需要 Node.js 18+ 以使用全局 fetch。'); process.exitCode = 1; return; }

if (!API_KEY || API_KEY === 'YOUR_API_KEY_HERE') { console.error('错误:请在常量 API_KEY 中设置有效的 API Key。'); process.exitCode = 1; return; }

const url = buildUrl(BASE_URL, ENDPOINT, { city: CITY, country_code: COUNTRY_CODE, days: DAYS, units: UNITS, lang: LANG, });

const headers = { 'Accept': 'application/json', 'X-API-Key': API_KEY, };

try { const data = await fetchWithRetry(url, { method: 'GET', headers });

const daily = Array.isArray(data?.daily) ? data.daily : null;
if (!daily || daily.length === 0) {
  console.error('未从响应中获取到 daily 预报数据。');
  process.exitCode = 1;
  return;
}

for (const day of daily) {
  const dateStr = formatDate(day?.date);
  const desc = day?.weather?.description ?? '(无描述)';
  const tMax = day?.temp?.max;
  const tMin = day?.temp?.min;

  const maxStr = typeof tMax === 'number' ? toFixedMaybe(tMax, 1) : 'N/A';
  const minStr = typeof tMin === 'number' ? toFixedMaybe(tMin, 1) : 'N/A';

  // 输出格式:YYYY-MM-DD 描述 最高/最低(°C)
  console.log(`${dateStr} ${desc} ${maxStr}/${minStr}(°C)`);
}

} catch (err) { console.error(请求失败:${err?.message || err}); process.exitCode = 1; } }

main();

#!/usr/bin/env python3

-- coding: utf-8 --

import sys import json import requests from requests.auth import HTTPBasicAuth from typing import Dict, Any

=========================

Configuration constants

=========================

TOKEN_URL = "https://auth.starcal.example/oauth2/token" OAUTH2_FLOW = "client_credentials" # informational, not used directly CLIENT_ID = "sc_client_9f2a" CLIENT_SECRET = "sc_secret_xxx" SCOPE = "calendar.events.write"

BASE_URL = "https://api.starcal.example" EVENTS_ENDPOINT = "/v1/events"

TIMEOUT_S = 10 # seconds

Event details

EVENT_TITLE = "季度规划评审" EVENT_START = "2025-11-25T10:00:00+08:00" EVENT_END = "2025-11-25T11:00:00+08:00" EVENT_TZ = "Asia/Shanghai" EVENT_ATTENDEES = ["dev1@team.example", "pm@team.example"] EVENT_REMINDER_MINUTES = 15 EVENT_LOCATION = "三楼3A会议室" EVENT_DESCRIPTION = ( "目标:评审Q1目标;议程:\n" "1) 指标回顾(15m)\n" "2) 风险与应对(20m)\n" "3) 行动项(25m)" ) NOTIFY_ATTENDEES = True

def get_access_token() -> str: """ Obtain OAuth2 access token using client credentials flow. """ data = { "grant_type": "client_credentials", "scope": SCOPE, } headers = { "Content-Type": "application/x-www-form-urlencoded", }

try:
    resp = requests.post(
        TOKEN_URL,
        data=data,
        headers=headers,
        timeout=TIMEOUT_S,
        auth=HTTPBasicAuth(CLIENT_ID, CLIENT_SECRET),
    )
except requests.RequestException as e:
    print(f"[ERROR] Token request failed: {e}", file=sys.stderr)
    sys.exit(1)

if not resp.ok:
    msg = resp.text.strip() if resp.text else f"HTTP {resp.status_code}"
    print(f"[ERROR] Token endpoint returned error: {msg}", file=sys.stderr)
    sys.exit(1)

try:
    token_payload = resp.json()
except json.JSONDecodeError:
    print("[ERROR] Failed to parse token response as JSON.", file=sys.stderr)
    sys.exit(1)

access_token = token_payload.get("access_token")
token_type = token_payload.get("token_type", "").lower()

if not access_token or token_type != "bearer":
    print("[ERROR] Invalid token response: missing access_token or token_type != 'bearer'.", file=sys.stderr)
    sys.exit(1)

return access_token

def build_event_payload() -> Dict[str, Any]: """ Build the JSON payload for creating the calendar event. """ return { "title": EVENT_TITLE, "start_time": EVENT_START, "end_time": EVENT_END, "timezone": EVENT_TZ, "attendees": EVENT_ATTENDEES, "reminder_minutes": EVENT_REMINDER_MINUTES, "location": EVENT_LOCATION, "description": EVENT_DESCRIPTION, "notify_attendees": NOTIFY_ATTENDEES, }

def create_event(access_token: str, event_payload: Dict[str, Any]) -> Dict[str, Any]: """ Create an event via Starcal Calendar API. """ url = f"{BASE_URL}{EVENTS_ENDPOINT}" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {access_token}", }

try:
    resp = requests.post(
        url,
        headers=headers,
        json=event_payload,
        timeout=TIMEOUT_S,
    )
except requests.RequestException as e:
    print(f"[ERROR] Create event request failed: {e}", file=sys.stderr)
    sys.exit(1)

if not resp.ok:
    details = ""
    try:
        details = resp.json()
    except Exception:
        details = resp.text
    print(f"[ERROR] Create event failed. HTTP {resp.status_code}. Details: {details}", file=sys.stderr)
    sys.exit(1)

try:
    return resp.json()
except json.JSONDecodeError:
    print("[ERROR] Failed to parse create-event response as JSON.", file=sys.stderr)
    sys.exit(1)

def main(): # Step 1: Obtain access token via OAuth2 client credentials token = get_access_token()

# Step 2: Build event payload and create event
payload = build_event_payload()
result = create_event(token, payload)

# Step 3: Print required fields on success
event_id = result.get("id")
html_link = result.get("html_link")

if not event_id:
    print("[ERROR] Event created but response missing 'id'. Full response:", file=sys.stderr)
    print(json.dumps(result, ensure_ascii=False, indent=2), file=sys.stderr)
    sys.exit(1)

print(f"event_id={event_id}")
print(f"html_link={html_link or 'N/A'}")

if name == "main": main()

package main

import ( "context" "crypto/md5" "encoding/base64" "errors" "fmt" "io" "net/http" "net/url" "os" "strings" "time" )

func main() { // Config from prompt baseURL := "https://storage.sanmu.example" username := "u_demo" password := "p_demo_token"

bucket := "build-artifacts"
objectKey := "release/2.3.1/app-linux-amd64.tar.gz"
filePath := "./dist/app.tar.gz"

contentType := "application/gzip"
providedContentMD5 := "Q2hlY2sgSW50ZWdyaXR5IQ=="
metaProject := "nebula"
metaEnv := "staging"

timeout := 30 * time.Second
expectedStatus := map[int]bool{200: true, 201: true}

// Open file
f, err := os.Open(filePath)
if err != nil {
	exitErr("open file: %v", err)
}
defer f.Close()

stat, err := f.Stat()
if err != nil {
	exitErr("stat file: %v", err)
}
if !stat.Mode().IsRegular() {
	exitErr("not a regular file: %s", filePath)
}

// Compute MD5 (base64) for local verification and potential header
computedB64MD5, err := computeFileBase64MD5(f)
if err != nil {
	exitErr("compute file MD5: %v", err)
}
// Reset the file offset to start for upload
if _, err := f.Seek(0, 0); err != nil {
	exitErr("seek file to start: %v", err)
}

// Choose which MD5 to send. If provided differs, warn and prefer computed to avoid server rejection.
contentMD5ToSend := computedB64MD5
if providedContentMD5 != "" && providedContentMD5 != computedB64MD5 {
	fmt.Fprintf(os.Stderr, "Warning: provided Content-MD5 (%s) != computed (%s). Using computed value to ensure integrity.\n", providedContentMD5, computedB64MD5)
} else if providedContentMD5 != "" {
	contentMD5ToSend = providedContentMD5
}

// Build URL
fullURL := buildObjectURL(baseURL, bucket, objectKey)

// Context with timeout (cancelable)
ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()

// HTTP client
client := &http.Client{}

req, err := http.NewRequestWithContext(ctx, http.MethodPut, fullURL, f)
if err != nil {
	exitErr("create request: %v", err)
}
req.SetBasicAuth(username, password)
req.Header.Set("Content-Type", contentType)
req.Header.Set("Content-MD5", contentMD5ToSend)
req.Header.Set("X-Meta-Project", metaProject)
req.Header.Set("X-Meta-Env", metaEnv)
req.ContentLength = stat.Size()

resp, err := client.Do(req)
if err != nil {
	// Surface context-related errors clearly
	if errors.Is(err, context.DeadlineExceeded) {
		exitErr("request timed out after %s", timeout)
	}
	if errors.Is(err, context.Canceled) {
		exitErr("request canceled")
	}
	// net/http may wrap timeouts in *url.Error with Timeout()
	var urlErr *url.Error
	if errors.As(err, &urlErr) && urlErr.Timeout() {
		exitErr("request timeout: %v", err)
	}
	exitErr("request failed: %v", err)
}
defer resp.Body.Close()

if !expectedStatus[resp.StatusCode] {
	// Read limited body for error diagnostics
	const maxErrBody = 64 * 1024
	body, _ := io.ReadAll(io.LimitReader(resp.Body, maxErrBody))
	exitErr("unexpected status: %d. Body: %s", resp.StatusCode, string(body))
}

etag := resp.Header.Get("ETag")
lastModified := resp.Header.Get("Last-Modified")
location := resp.Header.Get("Location")

fmt.Printf("Upload succeeded. Status=%d\n", resp.StatusCode)
fmt.Printf("ETag: %s\n", etag)
if lastModified != "" {
	fmt.Printf("Last-Modified: %s\n", lastModified)
}
if location != "" {
	fmt.Printf("Location: %s\n", location)
}

}

func computeFileBase64MD5(f *os.File) (string, error) { h := md5.New() if _, err := io.Copy(h, f); err != nil { return "", err } sum := h.Sum(nil) return base64.StdEncoding.EncodeToString(sum), nil }

func buildObjectURL(base, bucket, objectKey string) string { base = strings.TrimRight(base, "/") path := "/v1/buckets/" + url.PathEscape(bucket) + "/objects/" + escapeObjectKeyPreserveSlashes(objectKey) return base + path }

func escapeObjectKeyPreserveSlashes(k string) string { if k == "" { return "" } parts := strings.Split(k, "/") for i, p := range parts { parts[i] = url.PathEscape(p) } return strings.Join(parts, "/") }

func exitErr(format string, a ...any) { fmt.Fprintf(os.Stderr, "Error: "+format+"\n", a...) os.Exit(1) }

示例详情

该提示词已被收录:
“程序员必备:提升开发效率的专业AI提示词合集”
让 AI 成为你的第二双手,从代码生成到测试文档全部搞定,节省 80% 开发时间
√ 立即可用 · 零学习成本
√ 参数化批量生成
√ 专业提示词工程师打磨

📖 如何使用

30秒出活:复制 → 粘贴 → 搞定
与其花几十分钟和AI聊天、试错,不如直接复制这些经过千人验证的模板,修改几个 {{变量}} 就能立刻获得专业级输出。省下来的时间,足够你轻松享受两杯咖啡!
加载中...
💬 不会填参数?让 AI 反过来问你
不确定变量该填什么?一键转为对话模式,AI 会像资深顾问一样逐步引导你,问几个问题就能自动生成完美匹配你需求的定制结果。零门槛,开口就行。
转为对话模式
🚀 告别复制粘贴,Chat 里直接调用
无需切换,输入 / 唤醒 8000+ 专家级提示词。 插件将全站提示词库深度集成于 Chat 输入框。基于当前对话语境,系统智能推荐最契合的 Prompt 并自动完成参数化,让海量资源触手可及,从此彻底告别"手动搬运"。
即将推出
🔌 接口一调,提示词自己会进化
手动跑一次还行,跑一百次呢?通过 API 接口动态注入变量,接入批量评价引擎,让程序自动迭代出更高质量的提示词方案。Prompt 会自己进化,你只管收结果。
发布 API
🤖 一键变成你的专属 Agent 应用
不想每次都配参数?把这条提示词直接发布成独立 Agent,内嵌图片生成、参数优化等工具,分享链接就能用。给团队或客户一个"开箱即用"的完整方案。
创建 Agent

✅ 特性总结

快速生成高质量API交互代码,减少编码时间,提升开发效率。
自动处理认证逻辑,让你无需担心繁琐的验证步骤。
支持多语言、多框架代码生成,覆盖主流编程场景。
灵活适配不同库与工具,满足多样化的业务需求。
智能化处理数据请求与参数传递,确保交互流程流畅无误。
代码结构清晰、逻辑完整,无需二次调整即可直接运行。
支持解决常见开发场景中的数据处理和交互逻辑优化。
降低上手难度,通过参数化模板快速定制符合需求的代码。

🎯 解决的问题

快速生成高质量且可直接执行的API交互代码,满足开发者在不同编程语言和框架下快速实现API功能的需求。

🕒 版本历史

当前版本
v2.1 2024-01-15
优化输出结构,增强情节连贯性
  • ✨ 新增章节节奏控制参数
  • 🔧 优化人物关系描述逻辑
  • 📝 改进主题深化引导语
  • 🎯 增强情节转折点设计
v2.0 2023-12-20
重构提示词架构,提升生成质量
  • 🚀 全新的提示词结构设计
  • 📊 增加输出格式化选项
  • 💡 优化角色塑造引导
v1.5 2023-11-10
修复已知问题,提升稳定性
  • 🐛 修复长文本处理bug
  • ⚡ 提升响应速度
v1.0 2023-10-01
首次发布
  • 🎉 初始版本上线
COMING SOON
版本历史追踪,即将启航
记录每一次提示词的进化与升级,敬请期待。

💬 用户评价

4.8
⭐⭐⭐⭐⭐
基于 28 条评价
5星
85%
4星
12%
3星
3%
👤
电商运营 - 张先生
⭐⭐⭐⭐⭐ 2025-01-15
双十一用这个提示词生成了20多张海报,效果非常好!点击率提升了35%,节省了大量设计时间。参数调整很灵活,能快速适配不同节日。
效果好 节省时间
👤
品牌设计师 - 李女士
⭐⭐⭐⭐⭐ 2025-01-10
作为设计师,这个提示词帮我快速生成创意方向,大大提升了工作效率。生成的海报氛围感很强,稍作调整就能直接使用。
创意好 专业
COMING SOON
用户评价与反馈系统,即将上线
倾听真实反馈,在这里留下您的使用心得,敬请期待。
加载中...