Files
ystp/frontend/src/pages/DocsPage.vue

112 lines
6.2 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<div class="space-y-6">
<div class="space-y-1">
<h1 class="text-2xl font-semibold tracking-tight text-slate-900">开发者</h1>
<p class="text-sm text-slate-600">完整 API 调用说明与示例适合直接集成到服务端或脚本</p>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-5 text-sm text-slate-700">
<div class="font-medium text-slate-900">快速开始</div>
<ol class="mt-2 list-decimal space-y-1 pl-5">
<li>登录后在控制台创建 API Key Pro/Business</li>
<li>使用 <code>X-API-Key</code> 调用压缩接口</li>
<li>建议为每次请求设置 <code>Idempotency-Key</code>避免重复扣费</li>
</ol>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-5 text-sm text-slate-700">
<div class="font-medium text-slate-900">基础信息</div>
<ul class="mt-2 list-disc space-y-1 pl-5">
<li>Base URL<code>https://ys.workyai.cn/api/v1</code></li>
<li>认证方式<code>X-API-Key</code>推荐 <code>Authorization: Bearer &lt;token&gt;</code></li>
<li>支持格式PNG / JPG / JPEG / WebP / AVIF / GIF / BMP / TIFF / ICO仅静态图片支持 output_format 转码</li>
<li>压缩率<code>compression_rate</code> 1-100JPEG/WebP/AVIF 以该比例为体积上限无损格式为尽力优化</li>
<li>目标体积<code>target_size_bytes</code> 仅支持 JPEG/WebP/AVIF且不能与 <code>compression_rate</code> 同时提交</li>
<li>计量输出体积变小时计 1 仅同格式无缩放的 <code>compression_rate=100</code> 原样请求免计量</li>
</ul>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-5 text-sm text-slate-700">
<div class="font-medium text-slate-900">同步压缩返回 JSON + 下载链接</div>
<div class="mt-2 text-xs text-slate-500">
<code>POST /compress</code>表单字段<code>file</code><code>compression_rate</code>/<code>target_size_bytes</code>
<code>output_format</code><code>max_width</code><code>max_height</code><code>preserve_metadata</code>
</div>
<pre class="mt-3 overflow-auto rounded-lg bg-slate-950 p-4 text-xs text-slate-100"><code>curl -X POST \
-H "X-API-Key: if_live_xxx" \
-F "file=@./demo.jpg" \
-F "compression_rate=20" \
-F "output_format=webp" \
-F "max_width=2000" \
https://ys.workyai.cn/api/v1/compress</code></pre>
<div class="mt-3 text-xs text-slate-500">
返回字段包含 <code>download_url</code><code>saved_percent</code> <code>billing.units_charged</code>
目标小于清晰度保护边界时返回 <code>INVALID_REQUEST</code>不会返回超过目标的文件
</div>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-5 text-sm text-slate-700">
<div class="font-medium text-slate-900">同步压缩直接返回二进制</div>
<div class="mt-2 text-xs text-slate-500">
<code>POST /compress/direct</code>支持同样参数 output_formattarget_size_bytes响应头包含原/压缩大小与扣费信息
</div>
<pre class="mt-3 overflow-auto rounded-lg bg-slate-950 p-4 text-xs text-slate-100"><code>curl -X POST \
-H "X-API-Key: if_live_xxx" \
-F "file=@./demo.jpg" \
-F "target_size_bytes=120000" \
-F "output_format=jpeg" \
https://ys.workyai.cn/api/v1/compress/direct -o out.jpg -D headers.txt</code></pre>
<div class="mt-3 text-xs text-slate-500">
重点响应头<code>ImageForge-Original-Size</code>
<code>ImageForge-Compressed-Size</code>
<code>ImageForge-Units-Charged</code>
</div>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-5 text-sm text-slate-700">
<div class="font-medium text-slate-900">批量压缩异步任务</div>
<div class="mt-2 text-xs text-slate-500">
<code>POST /compress/batch</code>上传多文件后返回任务 ID
</div>
<pre class="mt-3 overflow-auto rounded-lg bg-slate-950 p-4 text-xs text-slate-100"><code>curl -X POST \
-H "X-API-Key: if_live_xxx" \
-F "files[]=@./a.jpg" \
-F "files[]=@./b.jpg" \
-F "compression_rate=30" \
https://ys.workyai.cn/api/v1/compress/batch</code></pre>
<div class="mt-3 text-xs text-slate-500">
轮询任务<code>GET /compress/tasks/&lt;task_id&gt;</code>响应包含每个文件的 <code>download_url</code> <code>download_all_url</code>ZIP
</div>
<pre class="mt-3 overflow-auto rounded-lg bg-slate-950 p-4 text-xs text-slate-100"><code>curl -H "X-API-Key: if_live_xxx" \
https://ys.workyai.cn/api/v1/compress/tasks/550e8400-e29b-41d4-a716-446655440200</code></pre>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-5 text-sm text-slate-700">
<div class="font-medium text-slate-900">下载文件</div>
<div class="mt-2 text-xs text-slate-500">
下载地址不在 <code>/api/v1</code> 需带同样的认证头
</div>
<pre class="mt-3 overflow-auto rounded-lg bg-slate-950 p-4 text-xs text-slate-100"><code>curl -H "X-API-Key: if_live_xxx" \
-L https://ys.workyai.cn/downloads/&lt;file_id&gt; -o result.jpg
curl -H "X-API-Key: if_live_xxx" \
-L https://ys.workyai.cn/downloads/tasks/&lt;task_id&gt; -o batch.zip</code></pre>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-5 text-sm text-slate-700">
<div class="font-medium text-slate-900">错误处理与常见问题</div>
<ul class="mt-2 list-disc space-y-1 pl-5">
<li><code>INVALID_REQUEST</code>参数或文件不合法检查格式与字段</li>
<li><code>UNSUPPORTED_FORMAT</code>不支持该格式或输入为动画图片</li>
<li><code>QUOTA_EXCEEDED</code>额度不足升级套餐或等待周期重置</li>
<li><code>FORBIDDEN</code>无权限下载该任务/文件认证不一致</li>
<li><code>EMAIL_NOT_VERIFIED</code>登录用户需先完成邮箱验证</li>
</ul>
</div>
<div class="text-sm text-slate-600">
更完整的字段与响应说明请查看仓库文档<code>docs/api.md</code>
</div>
</div>
</template>