Settings

Theme

Show HN: Invoking web APIs as if they were JavaScript methods

github.com

14 points by fmontesi · 7 comments

Reader

3 threads
lozzo

Could you put an example of a real web API (maybe the github API) and show how you would call it with your library ?

  • fmontesiOP

    I can give you one by reusing a bit the Telegraph example I have in the Jo tutorial: http://fmontesi.github.io/2018/08/16/jo.html

    To create an account:

    Jo.createAccount( { shortName: "Homer" } ) .then( response => { alert( response.result.accessToken ); } );

    To create a page:

    Jo.createPage( { accessToken: token, title: "Title", content: "Content" } ) .then( response => { alert( response.result.url ); } );

    This assume that those operations are available at the originating web server. If instead you're offering "Telegraph" as a subservice, then instead of Jo you have to write Jo("Telegraph"), the rest is the same.

    I hope this clarifies things a bit.

    • fmontesiOP

      Here's also Github. It's resource-oriented instead of verb-oriented (like Telegraph), so we use Jor instead of Jo (both are provided by the same library).

      Jor["users/fmontesi/repos"].get().then( response => ... );

      Notice that using ["users/fmontesi/repos"] is the "alternative" syntax. If the resource path is a valid method name in JavaScript, e.g., "/users", you can just write this:

      Jor.users.get().then( response => ... );

      I'm still wondering what's the best way of offering resource paths. Using a string is fine, but another option would be to have an extension of JavaScript, like JSX in react, but that would add a dependency (on Babel, for example). So we could do something like:

      Jor.users/fmontesi/repos.get().then( response => ... );

      Another option could be to use an in-between method, for example:

      Jor.users._.fmontesi._.repos.get().then( response => ... );

      But this looks a bit clunky. So the design space is a bit larger here. Mumble mumble. :-)

    • fmontesiOP

      By the way, here's the Telegraph API documentation, for reference: https://telegra.ph/api

      What I wrote in my reply refers to that.

fmontesiOP

A small library I made for fun. It's very early stage and I wanted to keep things simple, so it does not use any other established libraries (yet).

carbonem

Really cool, I’m impressed!

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection