89 lines
1.5 KiB
Markdown
89 lines
1.5 KiB
Markdown
# Cloudflare Pages Functions
|
|
|
|
API proxy endpoints for cloud-instances-api Worker.
|
|
|
|
## Endpoints
|
|
|
|
| Method | Path | Description |
|
|
|--------|------|-------------|
|
|
| GET | `/api/health` | Health check |
|
|
| GET | `/api/instances` | Query VM instances with filters |
|
|
| POST | `/api/recommend` | Tech stack recommendations |
|
|
|
|
## Configuration
|
|
|
|
### Environment Variables
|
|
|
|
Set in Cloudflare Pages dashboard or via CLI:
|
|
|
|
```bash
|
|
wrangler pages secret put WORKER_API_KEY
|
|
```
|
|
|
|
**Required Secrets:**
|
|
- `WORKER_API_KEY` - API key for Worker authentication
|
|
|
|
**Configured Variables (wrangler.toml):**
|
|
- `WORKER_API_URL` - Worker API base URL
|
|
|
|
## Local Development
|
|
|
|
1. Install dependencies:
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
2. Create `.env` file:
|
|
```bash
|
|
WORKER_API_KEY=your-api-key-here
|
|
```
|
|
|
|
3. Run local dev server:
|
|
```bash
|
|
npx wrangler pages dev . --port 8788
|
|
```
|
|
|
|
## Deployment
|
|
|
|
```bash
|
|
wrangler pages deploy . --project-name anvil-hosting
|
|
```
|
|
|
|
## CORS Configuration
|
|
|
|
All endpoints allow requests from:
|
|
- Origin: `https://hosting.inouter.com`
|
|
- Methods: `GET, POST, OPTIONS`
|
|
- Headers: `Content-Type`
|
|
|
|
## Architecture
|
|
|
|
```
|
|
Client Request
|
|
↓
|
|
/api/{endpoint} (Pages Function)
|
|
↓
|
|
functions/_shared/proxy.ts (CORS + Auth)
|
|
↓
|
|
cloud-instances-api.kappa-d8e.workers.dev (Worker)
|
|
↓
|
|
Response with CORS headers
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
All errors return JSON with CORS headers:
|
|
|
|
```json
|
|
{
|
|
"success": false,
|
|
"error": "Error message",
|
|
"details": "Optional error details"
|
|
}
|
|
```
|
|
|
|
Status codes:
|
|
- `400` - Invalid request
|
|
- `500` - Internal error
|
|
- `503` - Worker API unavailable
|