feat(data): add HTTP Request node with declarative configuration

- New HTTP Request node (net.noodl.HTTP) for API integration
- URL path parameter detection (/users/{userId} creates input ports)
- Dynamic ports for headers, query params, body fields
- Authentication presets: None, Bearer, Basic, API Key
- Response mapping with JSONPath extraction
- Body types: JSON, Form Data, URL Encoded, Raw
- Timeout and cancel support

Phase 2 Task 1 - Core implementation complete
This commit is contained in:
Richard Osborne
2025-12-08 17:17:27 +01:00
parent e927df760f
commit 0485a1f837
3 changed files with 937 additions and 6 deletions

View File

@@ -1,18 +1,37 @@
# TASK-001 Changelog
## [Date] - [Developer]
## 2025-01-08 - Cline
### Summary
[To be filled as work progresses]
Phase 1 implementation - Core HTTP Node created with declarative configuration support.
### Files Created
- [List files as they're created]
- `packages/noodl-runtime/src/nodes/std-library/data/httpnode.js` - Main HTTP node implementation with:
- URL with path parameter support ({param} syntax)
- HTTP methods: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS
- Dynamic port generation for headers, query params, body fields
- Authentication presets: None, Bearer, Basic, API Key
- Response mapping with JSONPath-like extraction
- Timeout and cancel support
- Inspector integration
### Files Modified
- [List files as they're modified]
- `packages/noodl-runtime/noodl-runtime.js` - Added HTTP node registration
### Features Implemented
1. **URL Path Parameters**: `/users/{userId}` automatically creates `userId` input port
2. **Headers**: Visual configuration creates input ports per header
3. **Query Parameters**: Visual configuration creates input ports per param
4. **Body Types**: JSON, Form Data, URL Encoded, Raw
5. **Body Fields**: Visual configuration creates input ports per field
6. **Authentication**: Bearer, Basic Auth, API Key (header or query)
7. **Response Mapping**: Extract data using JSONPath syntax
8. **Outputs**: Response, Status Code, Response Headers, Success/Failure signals
### Testing Notes
- [Document testing as it happens]
- [ ] Need to run `npm run dev` to verify node appears in Node Picker
- [ ] Need to test basic GET request
- [ ] Need to test POST with JSON body
### Known Issues
- [Track any issues discovered]
- Uses `stringlist` type for headers/queryParams/bodyFields - may need custom visual editors in Phase 3