0.2.0 • Published 8 years ago

composable-url v0.2.0

Weekly downloads
3
License
ISC
Repository
github
Last release
8 years ago

composable-url

Lightweight easy to use and extensible library for composing urls. I really liked the Restangular composability and wanted to bring that to both Node and the browser.

###install:

npm i --save composable-url

###Getting Started:

The library is bundled as a UMD library thus to import the classes the following methods will work.

  • ES6 Module
import {ComposableUrl, ComposableUrlProvider} from 'composable-url'
  • CommonJS
var composable           = require('composable-url'),
ComposableUrl            = composable.ComposableUrl,
ComposableUrlProvider    = composable.ComposableUrlProvider;

ComposableProvider

The composable url provider configs funciton is used to set global configurations on your urls. An example of a global config would be the base url. The base url would be set like so:

ComposableProvider.configs = {
    baseUrl: 'https://en.wikipedia.org/w/api.php'
}

The following properties are used on the

  • baseUrl: url to which all other paths will concatenated
  • http: The xhr client you want to use, right now it is geared towards axios or Angulars $http. The idea is that any xhr client which has convenience methods could be dropped in here and used.

ComposableUrl

This is a convenient factory method for creating a new composable url object. It takes one parameter and that is the path or path chunk to be appeneded to the base url. An example using the base url from above:

ComposableUrl('path')

This will create the following url:

https://en.wikipedia.org/w/api.php/path

Once you have created a composable url object the folowing functions will become available to you:

  • add:

    	this take a string and concats it to the current url
  • params:

    	this takes a json object and creates query params from the key value pairs
  • value:

    	once youre finished getting your url built up you can call value to get the url form composable url

example:

	ComposableUrl('some')
        .add('new')
        .add('url')
        .params({
            key: '62et4237fd4725fd475f4d74'
        })
        .value()

https://en.wikipedia.org/w/api.php/some/new/url/path?key= 62et4237fd4725fd475f4d74

ComposableHttp

This is an extension of ComposableUrl that adds the ability to just call convenience methods for your request type. This will take your url, configs, and data. The xhr client will be handed all of this info and it's respecting convenience method will be called. The result of the xhr call will be passed back, in the example below a promise it being passed back from axios.

setup

Here is an example again using the wikipedia baseUrl from above:

ComposableProvider.configs = {
    baseUrl: baseUrl,
    http: axios
}

ComposableHttp()
        .params({
            action: 'opensearch',
            format: 'json',
            search: 'castle',
            callback: '?'
        })
        .get()
            .then(function (result) {
                
            })

For working examples of using everything above the tests are available under the tests folder. Any comments, questions, ideas etc please let me know. Thanks.