RPC

Turn any function into an API! This lets you call a function in Val Town without manually handling a Request or Response object.

This val can be used as a replacement for the Run API, which implicitly did something similar.

Create an API from your function:

This is how you can expose a function as an API:

  1. Create an HTTP handler val
  2. Import this val
  3. Call rpc with your function as an argument

Here's an example from @std/rpc_example:

import { rpc } from "https://esm.town/v/std/rpc?v=6"; export const rpc_example = rpc(async (a: number, b: number) => { return a + b; });

And here is how you do it for one of your already existing private val, say floobie,

import { rpc } from "https://esm.town/v/std/rpc?v=6"; import { floobie } from "https://esm.town/v/stevekrouse/floobie"; export const rpced_floobie = rpc(floobie, true);

Send a request to your val

You can invoke that function from your client or your local machine with an HTTP request. You can either use a GET or a POST request, passing arguments in the query parameters or the body respectively. Make sure your val's privacy is set to Unlisted or Public.

GET request

const res = await fetch("https://std-rpc_example.web.val.run/?args=[2,3]"); console.log(await res.json()); // 5

POST request

const res = await fetch("https://std-rpc_example.web.val.run/", { method: "POST", body: JSON.stringify({ args: [2, 3] }) }); console.log(await res.json()); // 5