0.4.0 • Published 8 years ago

json-schema-request v0.4.0

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

JsonSchemaRequest

Allows making requests based on json hyper schema endpoints. Currently a work in progress.

Stability:Experimental NPM Version Travis Issues

Commitizen friendly Semantic Release License Maintenance Downloads

Installation:

npm install json-schema-request

Usage:

example.js

import jsonSchemaRequest from 'json-schema-request';

const myPartialBlogPost = {
    id: 42,
    author: "marvin"
};

jsonSchemaRequest({
    schemaUrl: "http://www.example.com/blog-post.json",
    rel: "self",
    context: myPartialBlogPost
})
    .then(result => console.log);

// {
//     id: 42,
//     author: "marvin",
//     title: "Of diodes and doors",
//     body: "...down the left hand side..."
// }

blog-post.json

{
    "id": "http://www.example.com/blog-post.json",
    "type": "object",
    "properties": {
        "id": { "type": "number" },
        "author": { "type": "string" },
        "title": { "type": "string" },
        "body": { "type": "string" }
    },
    "required": [ "title", "author", "id" ],
    "links": [
        {
            "rel": "self",
            "href": "http://www.example.com/api/post/{id}",
            "method": "GET",
            "targetSchema": { "$ref": "#" }
        }
    ]
}

The schema for the json object passed to jsonSchemaRequest is available in schema/inputSchema.json. The options are documented below as well:

OptionRequiredDescription
schemaUrlYesURL to load the schema from. References inside this schema that point to other files are also loaded, and inlined.
relYesRelationship name for link to request. This is defined in your schema.
contextContext data to insert into urls (eg 'id' in example above).
dataData to send along with the request (eg the body for 'create' rels).
headersHeader object to pass through to the request. (eg { "Content-Type": "application/json" })
schemaPrefixThe URL to prefix on schema IDs if missing. If you prefer to use relative URLs for your schemaUrl, or id or $ref in your schemas, this sets the server and path those relative URLs are attached to.
serverRootThe URL to prefix on hrefs if missing. If you prefer to use relative URLs for your href this sets the server and path those relative URLs are attached to.