A jQuery plugin for easy consumption of RESTful APIs

Related tags

API jquery.rest
Overview

jQuery REST Client

v1.0.1

Summary

A jQuery plugin for easy consumption of RESTful APIs

Downloads

File Size Report

Original: 10314 bytes.
Minified: 5920 bytes.
Gzipped:  1376 bytes.

Features

  • Simple
  • Uses jQuery Deferred for Asynchonous chaining
  • Basic Auth Support
  • Helpful Error Messages
  • Memory Cache
  • Cross-domain Requests with XDomain

Basic Usage

  1. Create a client.
  2. Construct your API.
  3. Make requests.

First setup your page:

<!-- jQuery -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<!-- jQuery rest -->
<script src="http://jpillora.com/jquery.rest/dist/1/jquery.rest.min.js"></script>
<!-- WARNING: I advise not using this link, instead download and host this library on your own server as GitHub has download limits -->

<script>
  // Examples go here...
</script>

Hello jquery.rest

var client = new $.RestClient('/rest/api/');

client.add('foo');

client.foo.read();
// GET /rest/api/foo/
client.foo.read(42);
// GET /rest/api/foo/42/
client.foo.read('forty-two');
// GET /rest/api/foo/forty-two/

Retrieving Results (Uses jQuery's $.Deferred)

var client = new $.RestClient('/rest/api/');

client.add('foo');

var request = client.foo.read();
// GET /rest/api/foo/
request.done(function (data, textStatus, xhrObject){
  alert('I have data: ' + data);
});

// OR simply:
client.foo.read().done(function (data){
  alert('I have data: ' + data);
});

More Examples

Nested Resources
var client = new $.RestClient('/rest/api/');

client.add('foo');
client.foo.add('baz');

client.foo.read();
// GET /rest/api/foo/
client.foo.read(42);
// GET /rest/api/foo/42/

client.foo.baz.read();
// GET /rest/api/foo/???/baz/???/
// ERROR: jquery.rest: Invalid number of ID arguments, required 1 or 2, provided 0
client.foo.baz.read(42);
// GET /rest/api/foo/42/baz/
client.foo.baz.read('forty-two',21);
// GET /rest/api/foo/forty-two/baz/21/
Basic CRUD Verbs
var client = new $.RestClient('/rest/api/');

client.add('foo');

// C
client.foo.create({a:21,b:42});
// POST /rest/api/foo/ (with data a=21 and b=42)
// Note: data can also be stringified to: {"a":21,"b":42} in this case, see options below

// R
client.foo.read();
// GET /rest/api/foo/
client.foo.read(42);
// GET /rest/api/foo/42/

// U
client.foo.update(42, {my:"updates"});
// PUT /rest/api/42/   my=updates

// D
client.foo.destroy(42);
client.foo.del(42);
// DELETE /rest/api/foo/42/
// Note: client.foo.delete() has been disabled due to IE compatibility
Adding Custom Verbs
var client = new $.RestClient('/rest/api/');

client.add('foo');
client.foo.addVerb('bang', 'PATCH');

client.foo.bang({my:"data"});
//PATCH /foo/bang/   my=data
client.foo.bang(42,{my:"data"});
//PATCH /foo/42/bang/   my=data
Basic Authentication
var client = new $.RestClient('/rest/api/', {
  username: 'admin',
  password: 'secr3t'
});

client.add('foo');

client.foo.read();
// GET /rest/api/foo/
// With header "Authorization: Basic YWRtaW46c2VjcjN0"

Note: A window.btoa polyfill such as Base64.js will be required for this feature to work in IE6,7,8,9

Caching
var client = new $.RestClient('/rest/api/', {
  cache: 5, //This will cache requests for 5 seconds
  cachableMethods: ["GET"] //This defines what method types can be cached (this is already set by default)
});

client.add('foo');

client.foo.read().done(function(data) {
  //'client.foo.read' is now cached for 5 seconds
});

// wait 3 seconds...

client.foo.read().done(function(data) {
  //data returns instantly from cache
});

// wait another 3 seconds (total 6 seconds)...

client.foo.read().done(function(data) {
  //'client.foo.read' cached result has expired
  //data is once again retrieved from the server
});

// Note: the cache can be cleared with:
client.cache.clear();
Override Options
var client = new $.RestClient('/rest/api/');

client.add('foo', {
  stripTrailingSlash: true,
  cache: 5
});

client.foo.add('bar', {
  cache: 10,
});

client.foo.read(21);
// GET /rest/api/foo (strip trailing slash and uses a cache timeout of 5)

client.foo.bar.read(7, 42);
// GET /rest/api/foo/7/bar/42 (still strip trailing slash though now uses a cache timeout of 10)
Fancy URLs
var client = new $.RestClient('/rest/api/');

Say we want to create an endpoint /rest/api/foo-fancy-1337-url/, instead of doing:

client.add('foo-fancy-1337-url');

client['foo-fancy-1337-url'].read(42);
// GET /rest/api/foo-fancy-1337-url/42

Which is bad and ugly, we do:

client.add('foo', { url: 'foo-fancy-1337-url' });

client.foo.read(42);
// GET /rest/api/foo-fancy-1337-url/42
Query Parameters
var client = new $.RestClient('/rest/api/');

client.add('foo');

client.foo.read({bar:42});
// GET /rest/api/foo/?bar=42

client.foo.create({ data:7 }, { bar:42 });
// POST /rest/api/foo/?bar=42 with body 'data=7'

client.foo.read({ data:7 }, { bar:42 });
// GET has no body!
// GET /rest/api/foo/?bar=42&data=7
Show API Example
var client = new $.RestClient('/rest/api/');

client.add('foo');
client.add('bar');
client.foo.add('baz');

client.show();

Console should say:

ROOT: /rest/api/
  foo: /rest/api/foo/:ID_1/
    create: POST
    read: GET
    update: PUT
    delete: DELETE
    baz: /rest/api/foo/:ID_1/baz/:ID_2/
      create: POST
      read: GET
      update: PUT
      delete: DELETE
  bar: /rest/api/bar/:ID_1/
    create: POST
    read: GET
    update: PUT
    delete: DELETE
Simplify client
var client = new $.RestClient('/rest/api/');

client.add('forum');
client.forum.add('post');
client.forum.post.add('comment');

Instead of:

client.forum.post.comment.read(42,21,7);
client.forum.post.comment.update(42,21,7, {...});

You can do:

var comment = client.forum.post.comment;
comment.read(42,21,7);
comment.update(42,21,7, {...});
Global Client Example
$.client = new $.RestClient('/rest/api/');

// in another file...

$.client.add('foo');

Note: This is not best practise, use RequireJS, CommonJS or similar !

Method Override Header
var client = new $.RestClient('/rest/api/');

client.add('foo');
client.foo.update(42);
// PUT /rest/api/foo/42/

client.add('bar', { methodOverride: true });
client.bar.update(42);
// POST /rest/api/bar/42/
// with header 'X-HTTP-Method-Override: PUT'
Singleton Resource Example
var client = new $.RestClient('/rest/api/');

client.add('foo');
client.foo.add('bar', { isSingle: true });
client.foo.bar.add('bazz');

client.foo.bar.bazz.read(42, 21);
// GET /rest/api/foo/42/bar/bazz/21/
//        'bar' has no id  ^

API

new $.RestClient( [ url ], [ options ] )

Instantiates and returns the root resource. Below denoted as client.

client.add( name, [ options ] )

Instaniates a nested resource on client. Internally this does another new $.RestClient though instead of setting it as root, it will add it as a nested (or child) resource as a property on the current client.

Newly created nested resources iterate through their options.verbs and addVerb on each.

Note: The url of each of these verbs is set to "".

See default options.verbs here.

client.addVerb( name, method, [ options ] )

Instaniates a new Verb function property on the client.

Note: name is used as the url if options.url is not set.

client.verb( [id1], ..., [idN], [data], [params])

All verbs use this signature. Internally, they are all essentially calls to $.ajax with custom options depending on the parent client and options.

ids must be a string or number.

data is a jQuery Ajax Options Object's data property. If ajax.data is set on the client this data will extend it.

params query parameters to be appended to the url

Note: A helpful error will be thrown if invalid arguments are used.

Options

The options object is a plain JavaScript option that may only contain the properties listed below.

See defaults here

Important: Both resources and verbs inherit their parent's options !

cache

A number representing the number of seconds to used previously cached requests. When set to 0, no requests are stored.

cachableMethods

An array of strings representing the HTTP method types that can be cached. Is ["GET"] by default.

verbs

A plain object used as a name to method mapping.

The default verbs object is set to:

{
  'create': 'POST',
  'read'  : 'GET',
  'update': 'PUT',
  'delete': 'DELETE'
}

For example, to change the default behaviour of update from using PUT to instead use POST, set the verbs property to { update: 'POST' }

url

A string representing the URL for the given resource or verb.

Note: url is not inherited, if it is not set explicitly, the name is used as the URL.

stringifyData

When true, will pass all POST data through JSON.stringify (polyfill required for IE<=8).

stripTrailingSlash

When true, the trailing slash will be stripped off the URL.

username and password

When both username and password are set, all ajax requests will add an 'Authorization' header. Encoded using btoa (polyfill required not non-webkit).

ajax

The jQuery Ajax Options Object

methodOverride

When true, requests (excluding HEAD and GET) become POST requests and the method chosen will be set as the header: X-HTTP-Method-Override. Useful for clients and/or servers that don't support certain HTTP methods.

request

The function used to perform the request (must return a jQuery Deferred). By default, it is:

request: function(resource, options) {
  return $.ajax(options);
}

isSingle

When true, resource is perceived as singleton:

See Singleton Resource Example

autoClearCache

When false, non-cachable requests (PUT, POST or DELETE - those not in cachableMethods) won't automatically clear the request's entry in the cache.

Note: Want more options ? Open up a New Feature Issue above.


Conceptual Overview

This plugin is made up nested 'Resource' classes. Resources contain options, child Resources and child Verbs. Verbs are functions that execute various HTTP requests. Both new $.RestClient and client.add construct new instances of Resource, however the former will create a root Resource with no Verbs attached, whereas the latter will create child Resources with all of it's options.verbs attached.

Since each Resource can have it's own set of options, at instantiation time, options are inherited from parent Resources, allowing one default set of options with custom options on child Resources.

Todo

  • CSRF
  • Add Tests

Contributing

See CONTRIBUTING.md

Change Log

  • v1.0.0 - Stable v1. Added isSingle and autoClearCache by @stalniy
  • v0.0.6 - Added methodOverride option
  • v0.0.5 - Minor bug fixes
  • v0.0.4 - Simplified API
  • v0.0.3 - Added into the jQuery Plugin Repo
  • v0.0.2 - Bug fixes
  • v0.0.1 - Beta Version

githalytics.com alpha

MIT License

Copyright © 2014 Jaime Pillora [email protected]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Analytics

Comments
  • An Id shouldn't be required when calling 'create'

    An Id shouldn't be required when calling 'create'

    Currently when using the restClient to create, if an Id isn't passed as the first argument, an error is thrown stating 'Uncaught ERROR: jquery.rest: Invalid argument: object Object. Must be strings or ints (IDs) followed by one optional plain object (data). '

    When creating a new instance of a resource, which I imagine should be a POST, I don't yet know what the Id of the object will be.

    opened by ghost 5
  • strip the trailing '/' in urls.

    strip the trailing '/' in urls.

    As this will change the urls generated by the plugin, we don't do it unless the option stripTrailingSlash is set.

    And for why I did that, it's simply before my framework is seeing

    /api/foo/12/

    and

    /api/foo/12

    as two different urls. Silly framework. :-)

    opened by yanick 5
  • ajax success/error handlers

    ajax success/error handlers

    hi. something is wrong... (for all requests server status is 200)

    var client = new $.RestClient('/rest/api/', { stringifyData: true });
    restAjaxOptions = {
        success: function(data, textStatus, jqXHR) {
           console.log("success " + jqXHR);
        },
        error: function(jqXHR, textStatus, errorThrown) {
           console.log("error " + jqXHR);
        }
    };
    client.add('items', {ajax: restAjaxOptions});
    ...
    $("button[data-role='save']").on("click", function(e){
      client.items.update($("#form").serializeJSON());
    });
    

    console log:

    success [object]
    
    var client = new $.RestClient('/rest/api/', { stringifyData: true });
    restAjaxOptions = {
        success: function(data, textStatus, jqXHR) {
           console.log('success ' + jqXHR);
        },
        error: function(jqXHR, textStatus, errorThrown) {
           console.log('error ' + jqXHR);
        }
    };
    client.add('items');
    ...
    $("button[data-role='save']").on("click", function(e){
      client.items.update($("#form").serializeJSON(), {ajax: restAjaxOptions});
    });
    

    console log:

    success undefined
    error undefined
    

    how can i pass the error handlers for each resource request? thx.

    opened by devrow 4
  • Handling responses

    Handling responses

    Hello there!

    Im really loving this, but Im having problems handling or creating code that handles the DELETE, UPDATE and GET request responses. Could you provide some snippets that make this more clear for me?

    Would this work? :

    client.foo.update.done(function(){});
    // or
    client.foo.delete.done(function(){});
    

    Cant wait for your answer. Great stuff thanks.

    opened by xtrasmal 4
  • TypeError: $.RestClient is not a constructor

    TypeError: $.RestClient is not a constructor

    Sorry I am a beginner with this but getting the TypeError: $.RestClient is not a constructor error in the console, when I do.

    //ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> /static/js/jquery.rest.js">

    function getSQS(id, role )
    {
       var client = new $.RestClient("/api/");
       client.add(role);
       client.add(id);
       var results = client.read()
    
       results.done(function (data){
           alert('Results: ' + data);
    });
    
    }
    

    I would really appreciate the help.

    Thank you!

    opened by emreozen 3
  • Bloqueado carregamento de conteúdo ativo mesclado

    Bloqueado carregamento de conteúdo ativo mesclado

    Estou com um problema, quando uso a api ela funcionando perfeitamente, porem de uns dias para ca, com atualização do mozila firefox. Esta dando erro quando acessado a api via Firefox, no console apresenta o seguinte erro: Bloqueado carregamento de conteúdo ativo mesclado

    Você ja passou por isso? Aproveitando para agradecer por essa lib, que realmente deixa muito pratico e legível as requisição ajax. Parabéns!

    opened by valmirphp 3
  • Licensing?

    Licensing?

    I'm sorry I know this isn't an issue with the component as such and I don't know any other way to contact you guys, but I cannot find any licensing information.

    I'd really like use this object, but without any licensing information I'd be violating your copyright if I distribute it along with my application.

    My own project is AGPL licensed, so almost any open license will work for me.

    opened by antoncl 2
  • Add ability to specify transport for rest client

    Add ability to specify transport for rest client

    It's useful to have an option which is responsible for transport functionality (backend, responder) - currently there is hard-coded $.ajax. Having such option it would be easier to test functionality which depends on rest schema by substitution its responder (e.g. localStorage, or just plain js responder). Responder handles request and can respond to it like a normal backend.

    Example:

    require(['rest-schema', 'lib/rest_localbackend'], function (schema, LocalBackend) {
      schema.add('todos', { backend: LocalBackend.respond });
    });
    

    It gives an ability to work with todos list only on frontend (a good way to stub the server if server functionality is still not ready for integration).

    opened by stalniy 2
  • http: missing from one of links in documentation.

    http: missing from one of links in documentation.

    On the documentation page at :- https://github.com/jpillora/jquery.rest just after:-

    First setup your page:

    The code includes:-

    which is missing the http: and so should read:-

    Nice script. Thanks.

    Steve.

    opened by halso 2
  • OAuth Support

    OAuth Support

    Hey there!

    I'd really love some OAuth support for this library. Consider using this OAuth library: http://oauth.googlecode.com/svn/code/javascript/oauth.js

    Thanks!

    Won't Fix 
    opened by natiz 2
  • Parameter to pass on every read()

    Parameter to pass on every read()

    For my API on the sever I need to pass &transform=1 to get structured data to read. Is there any convenient way to pass this on every call without changing all calls?

    opened by Disane87 1
  • CSRF example: Django Rest Framework

    CSRF example: Django Rest Framework

    Can you add following example to documentation Sourses: https://gist.github.com/alanhamlett/6316427 https://docs.djangoproject.com/en/dev/ref/csrf/#ajax I spent some time with this, may be it will be helpful for someone.

        function getCookie(name) {
            var cookieValue = null;
            if (document.cookie && document.cookie !== '') {
                var cookies = document.cookie.split(';');
                for (var i = 0; i < cookies.length; i++) {
                    var cookie = jQuery.trim(cookies[i]);
                    // Does this cookie string begin with the name we want?
                    if (cookie.substring(0, name.length + 1) === (name + '=')) {
                        cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
                        break;
                    }
                }
            }
            return cookieValue;
        }
    
        var ajaxOption = {
            beforeSend: function(xhr, settings) {
                if (settings.type == 'POST' || settings.type == 'PUT' || settings.type == 'DELETE') {
                    if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {
                        // Only send the token to relative URLs i.e. locally.
                        xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
                    }
                }
            }
        };
    
        var client = new $.RestClient('/api/rest/', {"ajax": ajaxOption});
    
    opened by p-frolov 0
  • Read method only allows one property to be passed in.

    Read method only allows one property to be passed in.

    Getting the following when attempting to pass in 2 param values to the Read method. ERROR: jquery.rest: Invalid number of ID arguments, required 1, provided 2

    opened by kbanashek 0
  • 400 response crashes browser

    400 response crashes browser

    I have a post request that looks like this:

        # Make request
        @client().v3.create(path, options).success (data) =>
          console.log("success")
        .error (errorMessage) =>
          console.log("error")
    

    When I make a request where I know I'll get a 400 response, I get this output:

    screen shot 2016-10-14 at 7 53 50 pm

    Issue is that the page has basically crashes at this point. I can't press anything or reload the site. 10-20 seconds passes and then I get this screen:

    screen shot 2016-10-14 at 7 54 18 pm

    So what's the correct way to handle an error response with jQuery rest?

    opened by holgersindbaek 1
  • Ajax Options

    Ajax Options

    I have created the Ajax option and passed to client method

    var restAjaxOptions = { success : function(jqXHR, textStatus, errorThrown) { }, error : function(jqXHR, textStatus, errorThrown) { alert(textStatus); } };

    client.add('postData', { ajax : restAjaxOptions });

    but the ajax option also got updated for all other methods.

    client.add('users'); // the ajax option reflected for this method also even though it is doesn't have any ajax options

    Please let us know how to put the ajax option specific to one method alone

    opened by raveendar 2
  • Custom Headers

    Custom Headers

    Is it possible to add custom headers to POST method.

    I need to Add "api_key" : apikey and "auth_key" : authkey in the header with my POST request. How can i do it?

    opened by ajsri77 1
Owner
Jaime Pillora
Jaime Pillora
🤠 An opinionated AJAX client for Ruby on Rails APIs

Rails Ranger Exploring the routes and paths of Ruby on Rails APIs Github Repository | Documentation Rails Ranger is a thin layer on top of Axios, whic

Victor Marques 37 Nov 22, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
A homebridge plugin to display the current consumption from your Tibber pulse as lux in Home kit.

homebridge-tibber-lightsensor Tibber lightsensor is a plugin for Homebridge. It fetches the current watt usage of your house and displays it as a ligh

Johan Runbert 2 Oct 11, 2022
A boilerplate for building production-ready RESTful APIs using Node.js, Express, and Mongoose

By running a single command, you will get a production-ready Node.js app installed and fully configured on your machine. The app comes with many built-in features, such as authentication using JWT, request validation, unit and integration tests, continuous integration, docker support, API documentation, pagination, etc. For more details, check the features list below.

Hagop Jamkojian 5k Dec 31, 2022
Framework for setting up RESTful JSON APIs with NodeJS.

Restberry works with both Express and Restify! Framework for setting up RESTful JSON APIs with NodeJS. Define your models and setup CRUD API calls wit

Restberry 117 Jul 5, 2021
An IoT bottle that tracks water consumption. Winner of Best Health Hack, MLH's Best Hardware Hack, and QB3's Best Big Data for the Improvement of Health Care Winner at CruzHacks 2022.

An IoT bottle that tracks water consumption. Winner of Best Health Hack, MLH's Best Hardware Hack, and QB3's Best Big Data for the Improvement of Health Care Winner at CruzHacks 2022.

Nathanael Garza 2 Jan 21, 2022
A global H3 population dataset optimized for consumption in Helium mapping projects.

H3 Population Helium A global population dataset based on Uber's H3 mapping system and seeded from the open source Kontur Population dataset. Optimize

Arman Dezfuli-Arjomandi 6 Apr 25, 2022
A simple web server exposing Hetzner cloud instances for consumption by the Prometheus HTTP service discovery.

Prometheus: Hetzner Service Discovery A server to provide automatic node discovery for Hetzner Cloud to Prometheus via HTTP service discovery. In cont

Matchory GmbH 1 Oct 10, 2022
A RESTful API for Bing wallpaper to use easy.

bing-wallpaper A RESTful API for Bing wallpaper to use easy. <img src="https://bingw.jasonzeng.dev/?w=800"/> Usage API Endpoint: https://bingw.jasonze

jasonzeng 31 Dec 15, 2022
Social-Feeds-APIs - REST APIs to build social media sites.

express4.17.1-in-docker EXPRESS 4.17 SPA IMPORTANT NOTES: 1. Make sure you follow the steps mentioned under "PROJECT START STEPS" and ensure that the

Patel Rohan 1 Jan 3, 2022
An easy to implement marquee JQuery plugin with pause on hover support. I know its easy because even I can use it.

Simple-Marquee Copyright (C) 2016 Fabian Valle An easy to implement marquee plugin. I know its easy because even I can use it. Forked from: https://gi

null 16 Aug 29, 2022
🚀 A RESTful API generator for Node.js

A RESTful API generator rest-hapi is a hapi plugin that generates RESTful API endpoints based on mongoose schemas. It provides a powerful combination

Justin Headley 1.2k Dec 31, 2022
RESTful HTTP client for JavaScript powered web applications

Amygdala is a RESTful HTTP library for JavaScript powered web applications. Simply configure it once with your API schema, and easily do GET, POST, PU

Lincoln Loop 392 Dec 6, 2022
RESTful degradable JavaScript routing using pushState

Davis.js Description Davis.js is a small JavaScript library using HTML5 history.pushState that allows simple Sinatra style routing for your JavaScript

Oliver Nightingale 532 Sep 24, 2022
RESTful API using Hapi NodeJs Framework. This app is project from Dicoding Couses, Belajar Membuat Aplikasi Back-end untuk Pemula

RESTful API using Hapi NodeJs Framework. This app is project from Dicoding Couses, Belajar Membuat Aplikasi Back-end untuk Pemula

Muhammad Ferdian Iqbal 1 Jan 3, 2022
Lolis-rest - RESTful API for lolis-api

Lolis REST RESTful + Website for Lolis API. Introduction This is a RESTful API which will be used on Lolis API Website and Wrapper. This API uses Imgu

Waifu.sbs 3 Aug 11, 2022
A Node.js Express backend for a Stackoverflow like answering forum, with RESTful endpoints

A Node.js Express backend for a Stackoverflow like answering forum, with RESTful endpoints, written in es6 style with linted and comprehensively unit-tested code. Utilizes a local json database using fs but has full separation of concern to implement anything else.

Dhiman Seal 3 Jan 9, 2022
MiniSense RESTful API

MiniSense RESTful API Why was it developed This project is part of an activity proposed by SenseUp aimed at approving a selection process for a Back-E

Alef Sena 1 Jan 21, 2022