ApiLane
Stop grepping for endpoints. ApiLane scans your workspace, lists every API route in one clickable tree, and jumps straight to the handler when you click a route.
Features
- Multi-framework route scanning
- Express / Fastify style:
app.get(), router.post(), server.delete() and friends, with best-effort prefix resolution when app.use('/prefix', router) appears in the same file
- NestJS:
@Controller('base') combined with @Get(), @Post(), @Put(), @Delete(), @Patch()
- FastAPI:
@app.get(), @router.post() and other method decorators
- Flask:
@app.route() / @bp.route() with methods=[...] (defaults to GET)
- Django:
path() and re_path() entries in urls.py
- API Routes tree view in the activity bar
- Group by file, by HTTP method, or view a flat list (toggle cycles file -> method -> flat)
- Per-method icons and colors (GET green, POST blue, DELETE red, ...)
- Item description shows the handler name; tooltip shows method, handler, framework and file:line
- Click a route -> jump to the exact handler line
- Filter Routes quick pick: fuzzy-search every route by method, path, handler or file; picking one jumps to it
- Status bar item:
$(list-tree) N routes with a per-method count breakdown in the tooltip; click -> opens Filter Routes
- Export: copy the full route list to the clipboard as a markdown table
- Auto-rescan: debounced (~1.5s) rescan whenever you save a
.js, .ts, .jsx, .tsx or .py file
Commands
All commands live under the ApiLane category in the Command Palette:
| Command |
What it does |
| ApiLane: Rescan Workspace |
Rescan all source files for routes |
| ApiLane: Filter Routes |
Fuzzy quick pick of every route; pick one -> jump to its handler |
| ApiLane: Copy Route Path |
Copy a route's path to the clipboard (also on tree items) |
| ApiLane: Toggle Grouping (File -> Method -> Flat) |
Cycle the tree grouping mode |
| ApiLane: Export Routes as Markdown Table |
Copy all routes to the clipboard as a markdown table |
Getting started
Open the Get Started with ApiLane walkthrough (Help -> Get Started -> ApiLane) or just open a project: ApiLane scans on activation and after every save. Click the ApiLane icon in the activity bar to see the route tree.
Example
app.use('/api', usersRouter);
usersRouter.get('/users', getUsers);
usersRouter.post('/users', createUser);
usersRouter.delete('/users/:id', deleteUser);
ApiLane tree (grouped by file):
users.ts (3 routes)
GET /api/users getUsers
POST /api/users createUser
DELETE /api/users/:id deleteUser
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
Shows up as GET /items/{item_id} with handler read_item.
Configuration
| Setting |
Default |
Description |
apiLane.excludeGlobs |
node_modules, dist, out, build, .git, venv, .venv, env, __pycache__, site-packages globs |
Glob patterns excluded from route scanning |
{
"apiLane.excludeGlobs": [
"**/node_modules/**",
"**/dist/**",
"**/venv/**"
]
}
Requirements
Author
Kanaihya Kumar - kanaihyakmr@gmail.com
License
MIT
| |