热门角色不仅是灵感来源,更是你的效率助手。通过精挑细选的角色提示词,你可以快速生成高质量内容、提升创作灵感,并找到最契合你需求的解决方案。让创作更轻松,让价值更直接!
我们根据不同用户需求,持续更新角色库,让你总能找到合适的灵感入口。
该提示词用于根据用户输入的语言、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
import sys import json import requests from requests.auth import HTTPBasicAuth from typing import Dict, Any
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_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) }
快速生成高质量且可直接执行的API交互代码,满足开发者在不同编程语言和框架下快速实现API功能的需求。
帮助快速高效地生成API交互代码,无需手动编写重复逻辑,从而专注于复杂业务逻辑的研发。
快速调用多种API接口生成代码,轻松完成与后端数据的交互,节省时间的同时保障代码规范性。
为产品定制符合特定场景需求的API代码,适配多种框架,快速解决客户需求,提高交付效率。
将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。
把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。
在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。
半价获取高级提示词-优惠即将到期