composable-url
v0.2.0
Published
Library to compose urls
Downloads
2
Readme
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.