这是一个基于 Hono 框架构建的现代 Web 应用程序,部署在 EdgeOne Pages 平台上。
在线演示:https://hono.edgeone.site
functions/ ├── index.tsx # 主入口文件 ├── [[default]].ts # EdgeOne Functions 默认路由 ├── env.ts # 环境类型定义 ├── components/ # 组件目录 │ └── Layout.tsx # 页面布局组件 └── routers/ # 路由模块 ├── index.ts # 统一路由导出 ├── book.tsx # 图书相关路由 ├── ssr.tsx # 服务端渲染路由 └── upload.ts # 文件上传路由
| 路径 | 方法 | 描述 |
|---|---|---|
/ | GET | 静态首页,从 public 目录提供 index.html |
示例:
https://hono.edgeone.app/ - 静态首页| 路径 | 方法 | 描述 |
|---|---|---|
/ssr/:name | GET | 动态 SSR 页面,显示个性化欢迎消息 |
示例:
https://hono.edgeone.app/ssr/john - 显示 "Hello john!" 页面| 路径 | 方法 | 描述 |
|---|---|---|
/book | GET | 获取所有图书列表页面 |
/book/:id | GET | 获取特定图书详情页面 |
/book | POST | 创建新图书(API 端点) |
示例:
https://hono.edgeone.app/book - 图书列表https://hono.edgeone.app/book/1 - 第一本书的详情创建图书 API 请求示例:
curl -X POST https://hono.edgeone.app/book \
-H "Content-Type: application/json" \
-d '{
"title": "新书标题",
"author": "作者姓名"
}'
支持的功能:
| 路径 | 方法 | 描述 |
|---|---|---|
/upload | POST | 文件上传端点 |
示例:
curl -X POST https://hono.edgeone.app/upload \
-F "file=@example.txt"
https://hono.edgeone.appapplication/json端点: POST /upload
描述: 上传文件到服务器
请求格式: multipart/form-data
请求参数:
file (必需): 要上传的文件curl 请求示例:
# 上传文本文件
curl -X POST https://hono.edgeone.app/upload \
-F "file=@/path/to/your/file.txt"
# 上传图片文件
curl -X POST https://hono.edgeone.app/upload \
-F "file=@/path/to/image.jpg"
# 上传并自定义文件名
curl -X POST https://hono.edgeone.app/upload \
-F "file=@document.pdf;filename=my-document.pdf"
响应示例:
{
"success": true,
"message": "文件上传成功",
"fileName": "file.txt"
}
错误响应:
{
"success": false,
"message": "未提供文件"
}
端点: POST /book
描述: 创建新的图书记录
请求参数:
{
"title": "图书标题",
"author": "作者姓名"
}
参数说明:
title (可选): 图书标题,默认为 "Untitled"author (可选): 作者姓名,默认为 "Unknown"curl 请求示例:
# 创建包含完整信息的图书
curl -X POST https://hono.edgeone.app/book \
-H "Content-Type: application/json" \
-d '{
"title": "红楼梦",
"author": "曹雪芹"
}'
# 只创建标题的图书
curl -X POST https://hono.edgeone.app/book \
-H "Content-Type: application/json" \
-d '{
"title": "新书标题"
}'
# 创建空图书(使用默认值)
curl -X POST https://hono.edgeone.app/book \
-H "Content-Type: application/json" \
-d '{}'
响应示例:
{
"success": true,
"message": "图书创建成功",
"book": {
"id": "abc123def",
"title": "图书标题",
"author": "作者姓名",
"createdAt": "2023-12-01T10:00:00.000Z"
}
}
curl 请求示例:
# 获取所有图书列表
curl -X GET https://hono.edgeone.app/book
# 获取特定图书详情
curl -X GET https://hono.edgeone.app/book/1
# 获取个人页面
curl -X GET https://hono.edgeone.app/john
| 错误码 | HTTP 状态码 | 描述 |
|---|---|---|
VALIDATION_ERROR | 400 | 请求参数验证失败 |
FILE_UPLOAD_ERROR | 400 | 文件上传失败 |
NOT_FOUND | 404 | 资源未找到 |
INTERNAL_ERROR | 500 | 内部服务器错误 |
所有 API 端点均支持跨域访问,响应头包含:
Access-Control-Allow-Origin: *Access-Control-Allow-Methods: POST, GET, OPTIONSAccess-Control-Allow-Headers: Content-Type, Authorization# 安装依赖
npm install
# 启动开发服务器
edgeone pages dev
项目使用以下环境变量和全局对象:
my_kv - KV 存储实例,用于数据持久化项目包含 IP 限制中间件配置(默认注释),可以限制访问来源:
app.use('*', ipRestriction(/* 配置 */));
{
"success": true,
"message": "操作成功",
"data": {}
}
{
"error": "ERROR_CODE",
"message": "错误描述"
}
项目采用现代化 UI 设计:
欢迎提交 Issues 和 Pull Requests 来改进这个项目。
MIT License