Expose fetch's Response class to JavaScript land
Describe the solution you'd like
As a JavaScript developer, I'd usually need to compose content (grab data from a provider) and return static HTML to clients (aka. Server Side Rendering). In order to accomplish this, JavaScript's engines expose a Response() class, part of fetch Web API.
It'd be great if the following example just works with Slight:
const html = `<!DOCTYPE html><h1>Hello World</h1>`;
const options = {
headers: {
"content-type": "text/html",
},
};
return new Response(html, options);
See specs: https://fetch.spec.whatwg.org/#response-class
Additional context
I'd also recommend considering exposing Request and Headers, also part of the fetch Web API.
cc @devigned @squillace
Currently, the js HTTP server example looks like: https://github.com/danbugs/slightjs/blob/4fe13b0107c800aeeeaca423cd68d6612b61ae57/examples/http-server/index.js
function handle_get(req) {
console.log("I just got a request @ uri: ", req.uri, ", w/ method: ", req.method);
switch (req.uri) {
case "/get/hello":
console.log("hello!");
break;
default:
break;
}
return JSON.stringify({ headers: null, body: "Hello, JS Wasm!", status: 200 });
}
The previous code snippet shows a route handler func which takes a request structure, logs some messages, and returns a string of JSON.
To clarify:
- the route handler should return a
Responsetype matching the fetch spec - consider exposing the fetch API
Is that accurate?
That's correct.