This is a modern Web application built on the Hono framework, deployed on the EdgeOne Pages platform.
Live demo: https://hono.edgeone.app
functions/
├── index.tsx # Main entry file
├── [[default]].ts # EdgeOne Functions default route
├── env.ts # Environment type definitions
├── components/ # Components directory
│ └── Layout.tsx # Page layout component
└── routers/ # Route modules
├── index.ts # Unified route exports
├── book.tsx # Book related routes
├── ssr.tsx # Server-side rendering routes
└── upload.ts # File upload routes
Path | Method | Description |
---|---|---|
/ |
GET | Static home page, serves index.html from public directory |
Examples:
https://hono.edgeone.app/
- Static home page/ssr
)Path | Method | Description |
---|---|---|
/ssr/:name |
GET | Dynamic SSR page, displays personalized welcome message |
Examples:
https://hono.edgeone.app/ssr/john
- Shows "Hello john!" page/book
)Path | Method | Description |
---|---|---|
/book |
GET | Get all books list page |
/book/:id |
GET | Get specific book details page |
/book |
POST | Create new book (API endpoint) |
Examples:
https://hono.edgeone.app/book
- Book listhttps://hono.edgeone.app/book/1
- Details of the first bookCreate Book API Request Example:
curl -X POST https://hono.edgeone.app/book \
-H "Content-Type: application/json" \
-d '{
"title": "New Book Title",
"author": "Author Name"
}'
Supported Features:
/upload
)Path | Method | Description |
---|---|---|
/upload |
POST | File upload endpoint |
Example:
curl -X POST https://hono.edgeone.app/upload \
-F "file=@example.txt"
https://hono.edgeone.app
application/json
Endpoint: POST /upload
Description: Upload files to server
Request Format: multipart/form-data
Request Parameters:
file
(required): File to uploadcurl Request Examples:
# Upload text file
curl -X POST https://hono.edgeone.app/upload \
-F "file=@/path/to/your/file.txt"
# Upload image file
curl -X POST https://hono.edgeone.app/upload \
-F "file=@/path/to/image.jpg"
# Upload with custom filename
curl -X POST https://hono.edgeone.app/upload \
-F "file=@document.pdf;filename=my-document.pdf"
Response Example:
{
"success": true,
"message": "File uploaded successfully",
"fileName": "file.txt"
}
Error Response:
{
"success": false,
"message": "No file provided"
}
Endpoint: POST /book
Description: Create new book record
Request Parameters:
{
"title": "Book Title",
"author": "Author Name"
}
Parameter Description:
title
(optional): Book title, defaults to "Untitled"author
(optional): Author name, defaults to "Unknown"curl Request Examples:
# Create book with complete information
curl -X POST https://hono.edgeone.app/book \
-H "Content-Type: application/json" \
-d '{
"title": "Dream of the Red Chamber",
"author": "Cao Xueqin"
}'
# Create book with only title
curl -X POST https://hono.edgeone.app/book \
-H "Content-Type: application/json" \
-d '{
"title": "New Book Title"
}'
# Create empty book (using defaults)
curl -X POST https://hono.edgeone.app/book \
-H "Content-Type: application/json" \
-d '{}'
Response Example:
{
"success": true,
"message": "Book created successfully",
"book": {
"id": "abc123def",
"title": "Book Title",
"author": "Author Name",
"createdAt": "2023-12-01T10:00:00.000Z"
}
}
curl Request Examples:
# Get all books list
curl -X GET https://hono.edgeone.app/book
# Get specific book details
curl -X GET https://hono.edgeone.app/book/1
# Get personal page
curl -X GET https://hono.edgeone.app/john
Error Code | HTTP Status Code | Description |
---|---|---|
VALIDATION_ERROR |
400 | Request parameter validation failed |
FILE_UPLOAD_ERROR |
400 | File upload failed |
NOT_FOUND |
404 | Resource not found |
INTERNAL_ERROR |
500 | Internal server error |
All API endpoints support cross-origin access, response headers include:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization
# Install dependencies
npm install
# Start development server
npm run dev
# Deploy to EdgeOne
npm run deploy
The project uses the following environment variables and global objects:
my_kv
- KV storage instance for data persistenceThe project includes IP restriction middleware configuration (commented by default), which can limit access sources:
app.use('*', ipRestriction(/* configuration */));
{
"success": true,
"message": "Operation successful",
"data": {}
}
{
"error": "ERROR_CODE",
"message": "Error description"
}
The project adopts modern UI design:
Welcome to submit Issues and Pull Requests to improve this project.
MIT License
This is a complete example application demonstrating various features and best practices of the Hono framework on EdgeOne Functions.
The project structure is clear, code is well organized, and suitable as a starting template for other projects.