Merge branch 'feature/v1.2' into 'main'

Feature/v1.2

See merge request apipark/APIPark!32
This commit is contained in:
杨梦洁
2024-10-22 17:33:51 +08:00
22 changed files with 297 additions and 491 deletions
+2 -2
View File
@@ -1,5 +1,5 @@
name: "Feature Request"
description: Suggest an enhancement to APINTO.
description: Suggest an enhancement to APIPark.
title: "feat: As a user, I want to ..., so that ..."
body:
- type: markdown
@@ -20,4 +20,4 @@ body:
placeholder: |
As a user, I want to ..., so that...
validations:
required: true
required: true
+50 -60
View File
@@ -1,7 +1,7 @@
![image]( https://github.com/user-attachments/assets/96e36db5-2733-49c8-8e1e-ecbcc60a3943 )
![image](https://github.com/user-attachments/assets/96e36db5-2733-49c8-8e1e-ecbcc60a3943)
<p align="center">
English
<a href="/README.md">English</a>
|
<a href="/readme/readme-jp.md">日本語</a>
|
@@ -61,104 +61,94 @@ curl -sSO https://download.apipark.com/install/quick-start.sh ; bash quick-sta
<table>
<tr>
<th>
Connect to 100+ major models from all mainstream AI Companies
Connect to 100+ AI models
</th>
<th>
Standardize all AI API call formats, with no additional adaptation work required
Unified API to use all AI
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
The API Service Plaza is one of APIParks core features, aiming to solve the problem of fragmented and chaotic internal API management in enterprises. Through the API Service Plaza, enterprises can showcase all API services on a unified platform, allowing different departments and teams to easily find and use the required API services.
<img src="https://apipark.com/wp-content/uploads/2024/10/AI-Gateway.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/Unified-API.png" />
</td>
</tr>
<tr>
<th>
Transform AI & Prompt to REST API
</th>
<th>
API Developer Portal
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/Prompt-template.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/developer-portal.png" />
</td>
</tr>
<tr>
<th>
High Performance
</th>
<th>
Manage API lifecycle
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/hyper-performance.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
The full API lifecycle management feature helps enterprises standardize the API management process, manage API traffic forwarding and load balancing, and oversee all API versions published externally. This improves API quality and maintainability, enabling efficient development and stable operation to support rapid business growth and innovation.
</td>
</tr>
<tr>
<th>
Combine AI models and prompt templates to form new AI APIs
</th>
<th>
Switching AI models or modifying prompts wont affect your APP or microservices
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
The API Service Plaza is one of APIParks core features, aiming to solve the problem of fragmented and chaotic internal API management in enterprises. Through the API Service Plaza, enterprises can showcase all API services on a unified platform, allowing different departments and teams to easily find and use the required API services.
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
The full API lifecycle management feature helps enterprises standardize the API management process, manage API traffic forwarding and load balancing, and oversee all API versions published externally. This improves API quality and maintainability, enabling efficient development and stable operation to support rapid business growth and innovation.
</td>
</tr>
<tr>
<th>
Centrally manage and display all AI / REST APIs
</th>
<th>
Cover the entire API lifecycle from design, release, operation, to deprecation
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
The API Service Plaza is one of APIParks core features, aiming to solve the problem of fragmented and chaotic internal API management in enterprises. Through the API Service Plaza, enterprises can showcase all API services on a unified platform, allowing different departments and teams to easily find and use the required API services.
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
The full API lifecycle management feature helps enterprises standardize the API management process, manage API traffic forwarding and load balancing, and oversee all API versions published externally. This improves API quality and maintainability, enabling efficient development and stable operation to support rapid business growth and innovation.
</td>
</tr>
<tr>
<th>
Manage multiple tenants, ensuring data isolation and security
Review subscription before allowing API requests
</th>
<th>
API resources require approval before usage
Manage subscriber
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Multi-tenant.png" />
The multi-tenant management feature allows enterprises to manage multiple tenants on the same platform. Each tenant can have independent resources, users, and permission settings, ensuring data and operation isolation, improving resource utilization efficiency, and simplifying management.
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Application.png" />
APIPark provides a process approval feature for all API resources, preventing violations or unauthorized API usage. Callers must apply for API resources and wait for the service provider's approval before officially using the API.
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Multi-tenant.png" />
</td>
</tr>
<tr>
<th>
Use detailed call logs to trace API access at any time
Logging
</th>
<th>
Comprehensive statistical reports*
Analysis
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Chart-1.png" />
The API call log feature provides enterprises with comprehensive logging capabilities, recording all relevant information for each API call. These logs allow enterprises to quickly trace and troubleshoot API call issues, ensuring system stability and data security.
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Chart.png" />
Through historical call data analysis, APIPark can display long-term API call trends and performance changes, helping enterprises perform preventative maintenance before problems arise.
</td>
</tr>
@@ -1,6 +1,5 @@
import { Dropdown, Row, Col, Button } from 'antd';
import i18n from '@common/locales';
import { $t } from '@common/locales';
import { memo, useEffect, useMemo } from 'react';
import { useGlobalContext } from '@common/contexts/GlobalStateContext';
import { Icon } from '@iconify/react/dist/iconify.js';
@@ -15,7 +15,7 @@ import localJa_JP from './scan/ja-JP.json'; // 本地翻译英文文件
// import config from '../../../../i18next-scanner.config.js';
const resources = {
'zh-CH': {
'zh-CN': {
translation: localZh_CN,
...zhCN
},
@@ -5,7 +5,7 @@
"Kb58e0c3f": "Service",
"Kc9e489f5": "Team",
"K61c89f5f": "API Marketplace",
"K16d71239": "Dashboard",
"K16d71239": "Analysis",
"K714c192d": "Call Statistics",
"Kd57dfe97": "Topology",
"K3fe97dcc": "System Settings",
@@ -24,7 +24,7 @@
"K631d646f": "Open API",
"K6535ff9c": "Account Settings",
"Kf15499b4": "Log Out",
"Kabbd6e6": "Documentation",
"Kabbd6e6": "Docs",
"K1196b104": "APIPark",
"K1f42de3": "HTTP Status Code",
"K4770dff4": "System Status Code",
@@ -59,7 +59,7 @@
"Kdeed8399": "Static Upstream Server",
"K4ee62e8": "This API lacks (0)(1)(2), please provide.",
"K385591f3": "Forwarding Info,",
"K68415c14": "Documentation Info,",
"K68415c14": "Docs Info,",
"K133b75e9": "Upstream Info,",
"K43fcaf94": "Success",
"Kc71c6a9": "Online Failed",
@@ -88,8 +88,8 @@
"K597435c5": "Monitor",
"Ke66a17dd": "Required",
"K28b68036": "Illegal Character, Only English Supported",
"K6206e4ad": "Upload OpenAPI Document (.json/.yaml)",
"Kfba46e6d": "Replace OpenAPI Document (.json/.yaml)",
"K6206e4ad": "Upload OpenAPI File (.json/.yaml)",
"Kfba46e6d": "Replace OpenAPI File (.json/.yaml)",
"Kdac8ce7e": "Open OpenAPI YAML Editor",
"Kffd7e274": "No Review: All applications are allowed to subscribe to this service",
"K8a8b13e4": "Manual Review: Only reviewed and approved applications can subscribe to this service",
@@ -190,7 +190,7 @@
"K6ebca204": "Update Time",
"Kabfe9512": "Save",
"K51d1eb5d": "API",
"Ka2b6d281": "API Documentation",
"Ka2b6d281": "API Docs",
"Kdefa9caa": "Usage Instructions",
"K36856e71": "Publish",
"K6382bbfd": "Subscription",
@@ -5,7 +5,7 @@
"Kb58e0c3f": "Service",
"Kc9e489f5": "Team",
"K61c89f5f": "API マーケット",
"K16d71239": "ダッシュボード",
"K16d71239": "解析",
"K714c192d": "呼び出し統計",
"Kd57dfe97": "トポロジー図",
"K3fe97dcc": "システム設定",
@@ -1,5 +0,0 @@
{
"Kac172626": "拒绝申请时,请填写拒绝理由",
"Ke1b1865": "私有",
"K4786c57c": "公共"
}
@@ -1,72 +0,0 @@
{
"Kefaf9956": "创建时间",
"Kad1c674c": "协议",
"Kad01bc3e": "方法",
"Ka29b346f": "地址(IP 端口或域名)",
"K63b1e0dc": "权重(0-999",
"Ka7f8266f": "带权轮询",
"K9d7e880a": "发布版本",
"Kea996156": "发布申请记录",
"K855135f": "创建版本时间",
"Kcbf39b82": "版本状态",
"K339d15b5": "创建人",
"K7194cea2": "审核时间",
"K831aa6c0": "申请方-应用",
"K7ad449bc": "审核状态",
"K3b3a98ce": "审核人",
"K61b62ace": "来源",
"K442937c4": "订阅时间",
"K442cfba1": "请输入",
"K3bb646e4": "请选择",
"Ka9481f95": "创建者",
"K2472615e": "服务数量",
"Kf7200cd9": "负责人",
"Kd7d84192": "姓名",
"Kc88e03b6": "团队角色",
"Ke08ff808": "添加日期",
"K19a3ebe0": "请求成功数",
"Kcaa8259": "转发成功数",
"K17f93984": "API 名称",
"K888f038f": "失败状态码数",
"Ke792d01c": "所属服务",
"K42d2bef2": "平均响应时间(ms)",
"K9197c994": "最大响应时间(ms)",
"K7c2f3fee": "最小响应时间(ms)",
"K3d85ea54": "平均请求流量(KB)",
"Keec09d32": "最大请求流量(KB)",
"K3786b48": "最小请求流量(KB)",
"Kdf35c48c": "所有成员",
"K759fb403": "状态",
"K5c123bad": "角色名称",
"K2c5882be": "绑定域名",
"K1cc07937": "过期日期",
"K39686a7f": "支持字母开头、英文数字中横线下划线组合",
"Ka4ecfa40": "英文数字下划线任意一种,首字母必须为英文",
"K37318b68": "无法连接集群,请检查集群地址是否正确或防火墙配置",
"Kac172626": "选择拒绝时,审核意见为必填",
"K7f0c746d": "操作成功",
"K6a365d01": "操作失败",
"K978062b6": "正在操作",
"Kca7bd6d4": "正在加载数据",
"K3c93b77e": "获取数据失败",
"Ke108c369": "登录成功",
"K9168d3e": "退出成功,将跳转至登录页",
"K2f8a7ab7": "未填写审核意见",
"Kb858d78a": "复制成功",
"K26e85d15": "复制失败,请手动复制",
"Kd60d204": "服务所属团队",
"K823bfe63": "在线",
"Kc9315fa1": "已拒绝",
"K3fbe7511": "发布异常",
"Ke64e695c": "发布中",
"K1f89176d": "申请方所属团队",
"K69827c60": "发布状态",
"K8f7abcab": " 次",
"K28cf9613": "每分钟",
"K18f25019": "每5分钟",
"Kf00f01ca": "每小时",
"Kfcda87fc": "每天",
"K29ec75dc": "每周",
"Ke1b1865": "私有网络",
"K4786c57c": "公共网络"
}
@@ -1,72 +0,0 @@
{
"Kefaf9956": "创建时间",
"Kad1c674c": "协议",
"Kad01bc3e": "方法",
"Ka29b346f": "地址(IP 端口或域名)",
"K63b1e0dc": "权重(0-999",
"Ka7f8266f": "带权轮询",
"K9d7e880a": "发布版本",
"Kea996156": "发布申请记录",
"K855135f": "创建版本时间",
"Kcbf39b82": "版本状态",
"K339d15b5": "创建人",
"K7194cea2": "审核时间",
"K831aa6c0": "申请方-应用",
"K7ad449bc": "审核状态",
"K3b3a98ce": "审核人",
"K61b62ace": "来源",
"K442937c4": "订阅时间",
"K442cfba1": "请输入",
"K3bb646e4": "请选择",
"Ka9481f95": "创建者",
"K2472615e": "服务数量",
"Kf7200cd9": "负责人",
"Kd7d84192": "姓名",
"Kc88e03b6": "团队角色",
"Ke08ff808": "添加日期",
"K19a3ebe0": "请求成功",
"Kcaa8259": "转发成功",
"K17f93984": "API 名称",
"K888f038f": "失败状态码",
"Ke792d01c": "所属服务",
"K42d2bef2": "平均响应时间(ms)",
"K9197c994": "最大响应时间(ms)",
"K7c2f3fee": "最小响应时间(ms)",
"K3d85ea54": "平均请求流量(KB)",
"Keec09d32": "最大请求流量(KB)",
"K3786b48": "最小请求流量(KB)",
"Kdf35c48c": "所有成员",
"K759fb403": "状态",
"K5c123bad": "角色名称",
"K2c5882be": "绑定域名",
"K1cc07937": "过期日期",
"K39686a7f": "支持字母开头、英文数字中横线下划线组合",
"Ka4ecfa40": "英文数字下划线任意一种,首字母必须为英文",
"K37318b68": "无法连接集群,请检查集群地址是否正确或防火墙配置",
"Kac172626": "拒绝申请时,请填写拒绝理由",
"K7f0c746d": "成功",
"K6a365d01": "失败",
"K978062b6": "正在操作",
"Kca7bd6d4": "正在加载数据",
"K3c93b77e": "获取数据失败",
"Ke108c369": "登录成功",
"K9168d3e": "退出成功,将跳转至登录页",
"K2f8a7ab7": "未填写审核意见",
"Kb858d78a": "复制成功",
"K26e85d15": "复制失败,请手动复制",
"Kd60d204": "服务所属团队",
"K823bfe63": "在线",
"Kc9315fa1": "已拒绝",
"K3fbe7511": "发布异常",
"Ke64e695c": "发布中",
"K1f89176d": "申请方所属团队",
"K69827c60": "发布状态",
"K8f7abcab": "次",
"K28cf9613": "每分钟",
"K18f25019": "每5分钟",
"Kf00f01ca": "每小时",
"Kfcda87fc": "每天",
"K29ec75dc": "每周",
"Ke1b1865": "私有",
"K4786c57c": "公共"
}
@@ -1,72 +0,0 @@
{
"Kefaf9956": "创建时间",
"Kad1c674c": "协议",
"Kad01bc3e": "方法",
"Ka29b346f": "地址(IP 端口或域名)",
"K63b1e0dc": "权重(0-999",
"Ka7f8266f": "带权轮询",
"K9d7e880a": "发布版本",
"Kea996156": "发布申请记录",
"K855135f": "创建版本时间",
"Kcbf39b82": "版本状态",
"K339d15b5": "创建人",
"K7194cea2": "审核时间",
"K831aa6c0": "申请方-应用",
"K7ad449bc": "审核状态",
"K3b3a98ce": "审核人",
"K61b62ace": "来源",
"K442937c4": "订阅时间",
"K442cfba1": "请输入",
"K3bb646e4": "请选择",
"Ka9481f95": "创建者",
"K2472615e": "服务数量",
"Kf7200cd9": "负责人",
"Kd7d84192": "姓名",
"Kc88e03b6": "团队角色",
"Ke08ff808": "添加日期",
"K19a3ebe0": "请求成功数",
"Kcaa8259": "转发成功数",
"K17f93984": "API 名称",
"K888f038f": "失败状态码数",
"Ke792d01c": "所属服务",
"K42d2bef2": "平均响应时间(ms)",
"K9197c994": "最大响应时间(ms)",
"K7c2f3fee": "最小响应时间(ms)",
"K3d85ea54": "平均请求流量(KB)",
"Keec09d32": "最大请求流量(KB)",
"K3786b48": "最小请求流量(KB)",
"Kdf35c48c": "所有成员",
"K759fb403": "状态",
"K5c123bad": "角色名称",
"K2c5882be": "绑定域名",
"K1cc07937": "过期日期",
"K39686a7f": "支持字母开头、英文数字中横线下划线组合",
"Ka4ecfa40": "英文数字下划线任意一种,首字母必须为英文",
"K37318b68": "无法连接集群,请检查集群地址是否正确或防火墙配置",
"Kac172626": "选择拒绝时,审核意见为必填",
"K7f0c746d": "操作成功",
"K6a365d01": "操作失败",
"K978062b6": "正在操作",
"Kca7bd6d4": "正在加载数据",
"K3c93b77e": "获取数据失败",
"Ke108c369": "登录成功",
"K9168d3e": "退出成功,将跳转至登录页",
"K2f8a7ab7": "未填写审核意见",
"Kb858d78a": "复制成功",
"K26e85d15": "复制失败,请手动复制",
"Kd60d204": "服务所属团队",
"K823bfe63": "在线",
"Kc9315fa1": "已拒绝",
"K3fbe7511": "发布异常",
"Ke64e695c": "发布中",
"K1f89176d": "申请方所属团队",
"K69827c60": "发布状态",
"K8f7abcab": " 次",
"K28cf9613": "每分钟",
"K18f25019": "每5分钟",
"Kf00f01ca": "每小时",
"Kfcda87fc": "每天",
"K29ec75dc": "每周",
"Ke1b1865": "私有网络",
"K4786c57c": "公共网络"
}
@@ -1,3 +0,0 @@
{
"Kd55c6887": "Review"
}
@@ -1,3 +0,0 @@
{
"Kd55c6887": "レビュー"
}
@@ -1,3 +0,0 @@
{
"Kd55c6887": "审核"
}
@@ -1,3 +0,0 @@
{
"Kd55c6887": "審核"
}
@@ -5,7 +5,7 @@
"Kb58e0c3f": "服务",
"Kc9e489f5": "团队",
"K61c89f5f": "API 市场",
"K16d71239": "仪表盘",
"K16d71239": "分析报告",
"K714c192d": "调用统计",
"Kd57dfe97": "拓扑图",
"K3fe97dcc": "系统设置",
@@ -5,7 +5,7 @@
"Kb58e0c3f": "服務",
"Kc9e489f5": "團隊",
"K61c89f5f": "API 市場",
"K16d71239": "儀表板",
"K16d71239": "分析報告",
"K714c192d": "調用統計",
"Kd57dfe97": "拓撲圖",
"K3fe97dcc": "系統設置",
+24 -1
View File
@@ -248,4 +248,27 @@ a{
}
.ai-service-api-preview .swagger-ui h3.opblock-tag{
display: none;
}
}
/* 整个背景容器设置 */
.background-container {
background: radial-gradient(ellipse 80% 900px at top, rgb(255 255 255 / 10%) 0%, rgb(4 0 71) 30%, rgb(13 17 23) 100%);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100vh;
overflow: hidden;
z-index: 1;
isolate: isolate;
}
/* SVG背景图案 */
.background-pattern {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
stroke: rgba(255, 255, 255, 0.1);
mask-image: radial-gradient(100% 100% at top right, white, transparent);
}
+43 -5
View File
@@ -2,10 +2,10 @@ import {FC, useCallback, useEffect, useRef, useState} from "react";
import {App, Button, Divider, Form, FormInstance, Input, Tooltip} from "antd";
import {useGlobalContext} from "@common/contexts/GlobalStateContext.tsx";
import {useFetch} from "@common/hooks/http.ts";
import {BasicResponse, RESPONSE_TIPS, STATUS_CODE} from "@common/const/const.tsx";
import {BasicResponse, STATUS_CODE} from "@common/const/const.tsx";
import {useNavigate} from "react-router-dom";
// import {useCrypto} from "../hooks/crypto.ts";
import Logo from '@common/assets/logo.png'
import Logo from '@common/assets/layout-logo.png'
import { $t } from "@common/locales";
import { Icon } from "@iconify/react/dist/iconify.js";
import LanguageSetting from "@common/components/aoplatform/LanguageSetting";
@@ -100,9 +100,46 @@ const Login:FC = ()=> {
}, []);
return (
<div className="h-full w-full flex flex-col bg-[#f5f7fa] items-center overflow-auto min-h-[490px]">
<div className="w-full text-right pr-[40px]"><LanguageSetting mode="dark"/></div>
<div className="w-[410px] mx-auto flex-1 flex flex-col items-center justify-center" >
<div className="h-full w-full flex flex-col items-center overflow-auto min-h-[490px] bg-[#0d1117]">
<div id="glow-background" className="background-container">
<svg className="background-pattern" aria-hidden="true">
<defs>
<pattern id="pattern-bg" width="200" height="200" patternUnits="userSpaceOnUse">
<path d="M.5 200V.5H200" fill="none"></path>
</pattern>
</defs>
<rect width="100%" height="100%" fill="url(#pattern-bg)"></rect>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" viewBox="0 0 800 450" opacity="1">
<defs>
<filter id="bbblurry-filter" x="-100%" y="-100%" width="400%" height="400%" filterUnits="objectBoundingBox" primitiveUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feGaussianBlur stdDeviation="99" x="0%" y="0%" width="100%" height="100%" in="SourceGraphic" edgeMode="none" result="blur"></feGaussianBlur>
</filter>
</defs>
<g filter="url(#bbblurry-filter)">
<ellipse rx="80.5" ry="66.5" cx="623.0285107902043" cy="25.708028895006635" fill="hsla(187, 67%, 50%, 1.00)">
<animate attributeName="fill" values="hsla(187, 67%, 50%, 1.00); hsla(340, 85%, 60%, 1.00); hsla(60, 90%, 55%, 1.00); hsla(187, 67%, 50%, 1.00)" dur="6s" repeatCount="indefinite"></animate>
</ellipse>
<ellipse rx="80.5" ry="66.5" cx="446.471435546875" cy="-11.694503784179688" fill="hsla(234, 78%, 61%, 1.00)">
<animate attributeName="fill" values="hsla(234, 78%, 61%, 1.00); hsla(100, 75%, 60%, 1.00); hsla(290, 80%, 70%, 1.00); hsla(234, 78%, 61%, 1.00)" dur="8s" repeatCount="indefinite"></animate>
</ellipse>
<ellipse rx="80.5" ry="66.5" cx="200.54574247724838" cy="-19.02454901710908" fill="hsla(167, 87%, 56%, 1.00)">
<animate attributeName="fill" values="hsla(167, 87%, 56%, 1.00); hsla(10, 90%, 65%, 1.00); hsla(300, 85%, 50%, 1.00); hsla(167, 87%, 56%, 1.00)" dur="10s" repeatCount="indefinite"></animate>
</ellipse>
<ellipse rx="80.5" ry="66.5" cx="340.05827594708103" cy="-9.424536458161867" fill="hsl(25, 100%, 64%)">
<animate attributeName="fill" values="hsl(25, 100%, 64%); hsl(200, 100%, 70%); hsl(50, 95%, 55%); hsl(25, 100%, 64%)" dur="8s" repeatCount="indefinite"></animate>
</ellipse>
</g>
</svg>
</div>
{/* <div className="w-full border-box text-right pr-[40px]"></div> */}
<div className="w-[410px] mx-auto flex-1 flex flex-col items-center justify-center z-[3]" >
<div className="mx-auto">
<span className="flex items-center justify-center">
<img
@@ -174,6 +211,7 @@ const Login:FC = ()=> {
<section className="flex flex-col items-center mt-[46px] text-SECOND_TEXT">
<p className="leading-[28px]">{$t('Version (0)-(1)',[state.version,state.updateDate])}</p>
<p className="leading-[28px]">{$t(state.powered)}</p>
<LanguageSetting mode="light"/>
</section>
</div>
</div>
@@ -1,7 +1,7 @@
import {Link, useNavigate, useParams} from "react-router-dom";
import {RouterParams} from "@core/components/aoplatform/RenderRoutes.tsx";
import { App, Avatar, Button, Descriptions, Divider, Tabs} from "antd";
import { useEffect, useRef, useState} from "react";
import { useEffect, useMemo, useRef, useState} from "react";
import {useBreadcrumb} from "@common/contexts/BreadcrumbContext.tsx";
import {BasicResponse, RESPONSE_TIPS, STATUS_CODE} from "@common/const/const.tsx";
import {useFetch} from "@common/hooks/http.ts";
@@ -34,11 +34,29 @@ const ServiceHubDetail = ()=>{
const [service, setService] = useState<ServiceDetailType>()
const navigate = useNavigate();
const modifyApiDoc = (apiDoc:string, apiPrefix:string)=>{
if(!apiDoc) return ''
if(!apiPrefix) return apiDoc
try{
const openApiSpec = JSON.parse(apiDoc);
// 遍历并修改 paths,给每个路径添加前缀
const modifiedPaths:Record<string,unknown> = {};
for (const [path, pathItem] of Object.entries(openApiSpec.paths)) {
modifiedPaths[apiPrefix + path] = pathItem;
}
openApiSpec.paths = modifiedPaths;
return JSON.stringify(openApiSpec);
}catch(err){
console.warn('拼接api前缀失败',err)
}
return apiDoc
}
const getServiceBasicInfo = ()=>{
fetchData<BasicResponse<{service:ServiceDetailType}>>('catalogue/service',{method:'GET',eoParams:{service:serviceId}, eoTransformKeys:['app_num','api_num','update_time','api_doc','invoke_address','approval_type','service_kind']}).then(response=>{
const {code,data,msg} = response
if(code === STATUS_CODE.SUCCESS){
setService(data.service)
setService({...data.service,apiDoc:modifyApiDoc(data.service.apiDoc, data.service.basic?.invokeAddress)})
setServiceBasicInfo(data.service.basic)
setServiceName(data.service.name)
setServiceDesc(data.service.description)
+50 -59
View File
@@ -1,7 +1,7 @@
![image](https://github.com/user-attachments/assets/96e36db5-2733-49c8-8e1e-ecbcc60a3943)
<p align="center">
English
<a href="/README.md">English</a>
|
<a href="/readme/readme-jp.md">日本語</a>
|
@@ -61,109 +61,100 @@ curl -sSO https://download.apipark.com/install/quick-start.sh; bash quick-start.
<table>
<tr>
<th>
主要なAIプロバイダの100以上の大規模モデルに接続
100以上のAIモデルに迅速に接続
</th>
<th>
すべてのAI APIの呼び出しフォーマットを統一し、追加の適応作業は不要
統一されたAPIフォーマットで全てのAIを呼び出し
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
APIサービスプラザはAPIParkの中心機能の1つであり、企業内部のAPIが分散し、管理が混乱している問題を解決することを目指しています。APIサービスプラザを通じて、企業はすべてのAPIサービスを統一されたプラットフォームで集中表示し、異なる部門やチームが必要なAPIサービスを簡単に見つけて使用できるようにします。
<img src="https://apipark.com/wp-content/uploads/2024/10/AI-Gateway.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/Unified-API.png" />
</td>
</tr>
<tr>
<th>
プロンプトテンプレートをREST APIにワンクリックで変換
</th>
<th>
チーム内でAPIサービスを迅速に共有
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/Prompt-template.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/developer-portal.png" />
</td>
</tr>
<tr>
<th>
Nginxに匹敵する高性能
</th>
<th>
APIの設計、公開、呼び出し、停止までをワンストップで対応
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/hyper-performance.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
APIのライフサイクル管理機能は、APIの管理プロセスを標準化し、トラフィック転送や負荷分散を管理し、外部に公開されるすべてのAPIバージョンを管理します。これにより、APIの品質と保守性が向上し、企業は効率的なAPI開発と安定した運用を実現でき、ビジネスの急速な成長とイノベーションをサポートします。
</td>
</tr>
<tr>
<th>
AIモデルとプロンプトを組み合わせ、新しいAI APIを作成
</th>
<th>
AIモデルを切り替えたり、プロンプトを変更しても、アプリやマイクロサービスに影響を与えない
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
APIサービスプラザはAPIParkの中心機能の1つであり、企業内部のAPIが分散し、管理が混乱している問題を解決することを目指しています。APIサービスプラザを通じて、企業はすべてのAPIサービスを統一されたプラットフォームで集中表示し、異なる部門やチームが必要なAPIサービスを簡単に見つけて使用できるようにします。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
APIのライフサイクル管理機能は、APIの管理プロセスを標準化し、トラフィック転送や負荷分散を管理し、外部に公開されるすべてのAPIバージョンを管理します。これにより、APIの品質と保守性が向上し、企業は効率的なAPI開発と安定した運用を実現でき、ビジネスの急速な成長とイノベーションをサポートします。
</td>
</tr>
<tr>
<th>
すべてのAI / REST APIを一元管理および表示
</th>
<th>
APIの設計、公開、運用、廃止までの全過程をカバー
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
APIサービスプラザはAPIParkの中心機能の1つであり、企業内部のAPIが分散し、管理が混乱している問題を解決することを目指しています。APIサービスプラザを通じて、企業はすべてのAPIサービスを統一されたプラットフォームで集中表示し、異なる部門やチームが必要なAPIサービスを簡単に見つけて使用できるようにします。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
APIのライフサイクル管理機能は、APIの管理プロセスを標準化し、トラフィック転送や負荷分散を管理し、外部に公開されるすべてのAPIバージョンを管理します。これにより、APIの品質と保守性が向上し、企業は効率的なAPI開発と安定した運用を実現でき、ビジネスの急速な成長とイノベーションをサポートします。
</td>
</tr>
<tr>
<th>
複数のテナントを管理し、データの分離とセキュリティを確保
テナントのAPI呼び出しリクエストを承認
</th>
<th>
APIリソースの利用には申請と承認が必要
マルチテナント管理
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Multi-tenant.png" />
マルチテナント管理機能は、企業が1つのプラットフォームで複数のテナントを管理する能力を提供します。各テナントは独立したリソース、ユーザー、権限設定を持つことができ、データと操作の分離を確保し、リソース利用効率と管理の利便性を向上させます。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Application.png" />
APIParkはすべてのAPIリソースにプロセス承認機能を提供し、違反やプラットフォームを回避したAPIの呼び出しを防ぎます。呼び出し元はAPIリソースを申請し、サービス提供者の承認後に正式にAPIを利用できます。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Multi-tenant.png" />
</td>
</tr>
<tr>
<th>
詳細な呼び出しログを使用して、任意の時点でAPIアクセス状況を調査
全てのAPI呼び出しを詳細に記録
</th>
<th>
豊富な統計レポート*
強力なデータ分析機能
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Chart-1.png" />
API呼び出しログ機能は、企業に包括的なログ記録機能を提供し、すべてのAPI呼び出しに関する関連情報を詳細に記録します。これらのログを使用して、企業はAPI呼び出しにおける問題を迅速に追跡し、トラブルシューティングを行い、システムの安定運用とデータセキュリティを確保します。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Chart.png" />
過去の呼び出しデータを分析することで、APIParkはAPIの長期的な呼び出しトレンドとパフォーマンスの変化を表示し、企業が問題が発生する前に予防的なメンテナンスを行うのに役立ちます。
</td>
</tr>
</table>
<br>
# 🚀 使用ケース
+49 -59
View File
@@ -1,7 +1,7 @@
![image](https://github.com/user-attachments/assets/96e36db5-2733-49c8-8e1e-ecbcc60a3943)
<p align="center">
English
<a href="/README.md">English</a>
|
<a href="/readme/readme-jp.md">日本語</a>
|
@@ -62,104 +62,94 @@ curl -sSO https://download.apipark.com/install/quick-start.sh; bash quick-start.
<table>
<tr>
<th>
接入所有主流AI供应商的 100+ 模型
快速接入 100+ AI 模型
</th>
<th>
统一所有 AI API 的调用格式,没有额外的适配工作
通过统一的 API 格式来调用所有 AI
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
API 服务广场是 APIPark 的核心功能之一,旨在解决企业内部 API 分散、管理混乱的问题。通过 API 服务广场,企业可以将所有的 API 服务集中展示在一个统一的平台上,使得不同部门和团队能够轻松找到并使用所需的 API 服务。
<img src="https://apipark.com/wp-content/uploads/2024/10/AI-Gateway.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/Unified-API.png" />
</td>
</tr>
<tr>
<th>
一键将 Prompt 提示词封装成 REST API
</th>
<th>
在团队内快速共享 API 服务
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/Prompt-template.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/developer-portal.png" />
</td>
</tr>
<tr>
<th>
比肩 Nginx 的强大性能
</th>
<th>
一站式完成 API 设计、发布、调用、下线
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/hyper-performance.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
API 全生命周期管理功能帮助企业规范 API 的管理流程,管理 API 的流量转发和负载均衡,并管理所有 API 对外发布的版本。提升 API 的质量和可维护性。通过这个功能,企业可以实现 API 的高效开发和稳定运营,从而支持业务的快速发展和创新。
</td>
</tr>
<tr>
<th>
组合 AI 模型和 Prompt 提示词,形成新的 AI API
</th>
<th>
切换 AI 模型或者修改 Prompt 不会影响你的 APP 应用或者微服务
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
API 服务广场是 APIPark 的核心功能之一,旨在解决企业内部 API 分散、管理混乱的问题。通过 API 服务广场,企业可以将所有的 API 服务集中展示在一个统一的平台上,使得不同部门和团队能够轻松找到并使用所需的 API 服务。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
API 全生命周期管理功能帮助企业规范 API 的管理流程,管理 API 的流量转发和负载均衡,并管理所有 API 对外发布的版本。提升 API 的质量和可维护性。通过这个功能,企业可以实现 API 的高效开发和稳定运营,从而支持业务的快速发展和创新。
</td>
</tr>
<tr>
<th>
集中管理与展示所有 AI / REST API
</th>
<th>
覆盖 API 从设计、发布、运行、下线的全过程
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
API 服务广场是 APIPark 的核心功能之一,旨在解决企业内部 API 分散、管理混乱的问题。通过 API 服务广场,企业可以将所有的 API 服务集中展示在一个统一的平台上,使得不同部门和团队能够轻松找到并使用所需的 API 服务。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
API 全生命周期管理功能帮助企业规范 API 的管理流程,管理 API 的流量转发和负载均衡,并管理所有 API 对外发布的版本。提升 API 的质量和可维护性。通过这个功能,企业可以实现 API 的高效开发和稳定运营,从而支持业务的快速发展和创新。
</td>
</tr>
<tr>
<th>
管理多个租户,确保数据隔离和安全
审核租户的API的调用申请
</th>
<th>
API资源需要先申请并等待审核通过才能调用
多租户管理
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Multi-tenant.png" />
多租户管理功能为企业提供了在同一平台上管理多个租户的能力,每个租户可以拥有独立的资源、用户和权限设置,确保数据和操作的隔离,帮助提升资源利用效率和管理便捷性。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Application.png" />
APIPark 对所有 API 资源提供流程审核功能,避免违规或避开平台来调用API,调用方需要先申请API资源,并等待服务方审核通过后才能正式调用API。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Multi-tenant.png" />
</td>
</tr>
<tr>
<th>
通过详细的调用日志,帮助排查API在任意时刻的访问情况
详细记录所有 API 的调用日志
</th>
<th>
丰富的统计报表*
强大的数据分析
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Chart-1.png" />
API 调用日志功能为企业提供了全面的日志记录能力,详细记录每一次 API 调用的所有相关信息。通过这些日志,企业可以快速追踪和排查 API 调用中的问题,确保系统的稳定运行和数据安全。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Chart.png" />
通过对历史调用数据的分析,APIPark 能够展示 API 长期的调用趋势和性能变化,帮助企业在问题发生前进行预防性维护。
</td>
</tr>
+49 -59
View File
@@ -1,7 +1,7 @@
![image](https://github.com/user-attachments/assets/96e36db5-2733-49c8-8e1e-ecbcc60a3943)
<p align="center">
English
<a href="/README.md">English</a>
|
<a href="/readme/readme-jp.md">日本語</a>
|
@@ -63,104 +63,94 @@ curl -sSO https://download.apipark.com/install/quick-start.sh; bash quick-start.
<table>
<tr>
<th>
接入所有主流 AI 供應商的 100+ 模型
快速接入 100+ AI 模型
</th>
<th>
統一所有 AI API 的調用格式,無需額外適配工作
通過統一的 API 格式來調用所有 AI
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
API 服務廣場是 APIPark 的核心功能之一,旨在解決企業內部 API 分散、管理混亂的問題。透過 API 服務廣場,企業可以將所有的 API 服務集中展示在一個統一的平台上,讓不同部門和團隊能輕鬆找到並使用所需的 API 服務。
<img src="https://apipark.com/wp-content/uploads/2024/10/AI-Gateway.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/Unified-API.png" />
</td>
</tr>
<tr>
<th>
一鍵將 Prompt 提示詞封裝成 REST API
</th>
<th>
在團隊內快速共享 API 服務
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/Prompt-template.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/developer-portal.png" />
</td>
</tr>
<tr>
<th>
比肩 Nginx 的強大性能
</th>
<th>
一站式完成 API 設計、發布、調用、下線
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/10/hyper-performance.png" />
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
API 全生命週期管理功能幫助企業規範 API 的管理流程,管理 API 的流量轉發與負載均衡,並管理所有 API 對外發佈的版本,提升 API 的品質與可維護性。透過這個功能,企業可以實現 API 的高效開發與穩定運營,從而支持業務的快速發展與創新。
</td>
</tr>
<tr>
<th>
組合 AI 模型與提示詞,形成新的 AI API
</th>
<th>
切換 AI 模型或修改提示詞不會影響你的應用程式或微服務
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
API 服務廣場是 APIPark 的核心功能之一,旨在解決企業內部 API 分散、管理混亂的問題。透過 API 服務廣場,企業可以將所有的 API 服務集中展示在一個統一的平台上,讓不同部門和團隊能輕鬆找到並使用所需的 API 服務。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
API 全生命週期管理功能幫助企業規範 API 的管理流程,管理 API 的流量轉發與負載均衡,並管理所有 API 對外發佈的版本,提升 API 的品質與可維護性。透過這個功能,企業可以實現 API 的高效開發與穩定運營,從而支持業務的快速發展與創新。
</td>
</tr>
<tr>
<th>
集中管理與展示所有 AI / REST API
</th>
<th>
覆蓋 API 從設計、發佈、運行、下線的全過程
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/%E9%A1%B5%E9%9D%A2-1.png" />
API 服務廣場是 APIPark 的核心功能之一,旨在解決企業內部 API 分散、管理混亂的問題。透過 API 服務廣場,企業可以將所有的 API 服務集中展示在一個統一的平台上,讓不同部門和團隊能輕鬆找到並使用所需的 API 服務。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Life-Cycle.png" />
API 全生命週期管理功能幫助企業規範 API 的管理流程,管理 API 的流量轉發與負載均衡,並管理所有 API 對外發佈的版本,提升 API 的品質與可維護性。透過這個功能,企業可以實現 API 的高效開發與穩定運營,從而支持業務的快速發展與創新。
</td>
</tr>
<tr>
<th>
管理多個租戶,確保數據隔離與安全
審核租戶的 API 調用申請
</th>
<th>
API 資源需先申請並通過審核後才能調用
多租戶管理
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Multi-tenant.png" />
多租戶管理功能為企業提供在同一平台上管理多個租戶的能力。每個租戶可以擁有獨立的資源、使用者與權限設置,確保數據與操作隔離,提升資源使用效率與管理便捷性。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Application.png" />
APIPark 為所有 API 資源提供流程審核功能,避免違規或繞過平台來調用 API。調用方需先申請 API 資源,並等待服務方審核通過後才能正式調用 API。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Multi-tenant.png" />
</td>
</tr>
<tr>
<th>
透過詳細的調用日誌,幫助排查 API 在任何時刻的訪問情況
詳細記錄所有 API 的調用日誌
</th>
<th>
豐富的統計報表*
強大的數據分析
</th>
</tr>
<tr>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Chart-1.png" />
API 調用日誌功能為企業提供全面的日誌記錄能力,詳細記錄每一次 API 調用的所有相關信息。透過這些日誌,企業可以快速追蹤與排查 API 調用中的問題,確保系統穩定運行與數據安全。
</td>
<td width="50%">
<img src="https://apipark.com/wp-content/uploads/2024/08/Chart.png" />
透過對歷史調用數據的分析,APIPark 能夠展示 API 長期的調用趨勢與性能變化,幫助企業在問題發生前進行預防性維護。
</td>
</tr>