ApiLane
Generates a live visual tree of all your API routes (Express, FastAPI, Django, etc.) in a sidebar panel. Click any route to jump to its handler. Auto-updates as you code.
Features
Multi-Framework Support:
- Express.js (JavaScript/TypeScript)
- Koa.js
- Hono
- FastAPI (Python)
- Flask (Python)
- Django (Python)
Live Route Tree: Sidebar panel showing all detected routes grouped by file
Click-to-Navigate: Click any route to jump directly to its handler function
Auto-Refresh: Updates automatically when you save files
Method Labels: Shows HTTP methods (GET, POST, PUT, DELETE, etc.) for each route
Path Parameters: Displays dynamic route segments like /users/:id
Usage
Activity Bar
Click the ApiLane icon in the activity bar to open the route tree panel.
Command Palette
- ApiLane: Refresh Route Tree — Manually rescan the workspace
- ApiLane: Show Route Panel — Open the routes sidebar
How It Works
- ApiLane scans your workspace for route definitions
- Routes are grouped by the file they're defined in
- Click any route entry to jump to that handler in the code
- The tree auto-updates when you save changes
Configuration
{
"apiLane.enabled": true,
"apiLane.frameworks": [
"express",
"fastapi",
"django",
"flask",
"hono",
"koa"
],
"apiLane.excludePatterns": [
"**/node_modules/**",
"**/dist/**",
"**/__pycache__/**"
]
}
Example
Express.js:
app.get('/users', getUsers);
app.post('/users', createUser);
app.get('/users/:id', getUserById);
app.delete('/users/:id', deleteUser);
ApiLane Tree:
📁 src/routes/users.ts
GET /users
POST /users
GET /users/:id
DELETE /users/:id
FastAPI:
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
@app.post("/items")
async def create_item(item: Item):
return item
ApiLane Tree:
📁 app/main.py
GET /items/{item_id}
POST /items
Supported Frameworks
- Express —
app.get(), app.post(), router.use()
- FastAPI —
@app.get(), @app.post(), decorators
- Django —
path(), re_path(), url()
- Flask —
@app.route(), @bp.route()
- Hono —
app.get(), app.post()
- Koa —
router.get(), router.post()
Requirements
License
MIT