transform-json-api
v1.1.12
Published
This module provides the ability to safely transform responses of different API requests using configuration alone.
Downloads
23
Readme
Transform JSON API
This module provides the ability to safely transform responses of different API requests using configuration alone.
install
npm i transform-json-api
usage
fetch(url, options, mapping, baseMapping = null)
url
- The URL of the API endpointoptions
- A fetch options object that is compatible withnode-fetch
.mapping
- A mapping object.baseMapping
- An object that holds the starting point path for the mapping. Default is "root".
mapping object
This object holds the configurations to tranform the API response to the desired object.
- Keys: String. represents a key name in the tranformed result. Currently dynamic key names are not supported.
- Values, One of two options:
- String. hold the path to the desired value in the API response.
- Object. A mapping operation for array items.
mapping operations
This object represent a predefined complex operation of mapping. It's structure:
[operation(args)]
operation
- The name of the operationargs
- Required argument for the operation
See also: Supported mapping operations
path
A path always start from "root" and represents the pointer to the response object. Supported syntax:
.string
- e.g."root.key"
[int]
- e.g."root[0]"
['string']
- e.g."root['key']"
Examples
Suppose API POST https://example.com/echo
responsds with the provided JSON body.
So this code:
const TransformJsonAPI = require('transform-json-api');
const url = "https://example.com/echo";
const options = {
method: "POST",
body: {
data: {
test: true,
items: [
{index: 1, name: "item 1"},
{index: 2, name: "item 2"}
]
}
}
}
const mapping = {
"item_names": "root[map(root.name)]",
}
const transorm = TransformJsonAPI.fetch(url, options, mapping, "root.data.items")
// transorm -> ["item 1", "item 2"]
format()
format(input:string|object, [output:string|object])
A simple string template function based on named or indexed arguments
base on this string-template
package
const greeting = format("Hello {name}, you have {count} unread messages", {
name: "Robert",
count: 12
})
// greeting -> "Hello Robert, you have 12 unread messages"
Excepts Objects as well
parameters()
parameters([input:string|object])
returns keys from a string template
const keys = parameters("Hello {name}, you have {count} unread messages");
// keys -> ["name", "count"]
Alternative with multiple arguments and not just with strings
const greeting = "Hello {name}, you have {count} unread messages";
const publishedAt = {"package_{id}": "Published at: {date}"};
const [greetingKeys, publishedAtKeys] = parameters(greeting, publishedAt);
// greetingKeys -> ["name", "count"]
// publishedAtKeys -> ["id", "date"]
License
This package is licensed under the MIT license.