Skip to content

Latest commit

 

History

History
236 lines (176 loc) · 25 KB

index.md

File metadata and controls

236 lines (176 loc) · 25 KB
layout title show_sidebar
page
Implementations
true

The following are projects implementing JSON API. If you'd like your project listed, send a pull request.

Note: This specification marked 1.0 on May 29th, 2015. The implementations below have not been verified for compliance, but a test suite is now being assembled to vet them.

Client libraries

JavaScript

  • ember-data is one of the original exemplar implementations. There is now an offical adapter to support json-api.
  • backbone-jsonapi is a Backbone adapter for JSON API. Supports fetching Models & Collections from a JSON API source.
  • backbone-relational-jsonapi is a parsing layer for Backbone.Relational. Entities specified in JSON API are automatically parsed to be injected into Backbone.Relational relations.
  • orbit.js is a standalone library for coordinating access to data sources and keeping their contents synchronized. Orbit's Common Library includes JSONAPISource for accessing JSON API servers. Orbit can be used independently or with Ember.js through the ember-orbit integration library.
  • YAYSON is an isomorphic library for serializing and reading JSON API data. Extend it to fit your models or just use it with plain objects.
  • Ember JSON API Resources is an Ember CLI Addon for a lightweight solution for data persistence in an Ember.js application.
  • hapi-json-api Plugin for the hapi framework; enforces Accept/Content-type rules and rewrites Boom errors to be spec compliant.
  • jsonapi-datastore is a lightweight standalone library for reading, serializing, and synchronizing relational JSON API data.
  • json-api-store A lightweight JavaScript library for using JSON API in the browser.
  • superagent-jsonapify A really lightweight (50 lines) JSON-API client addon for superagent, the isomorphic ajax client.
  • angular-jsonapi An Angular JSON API client
  • redux-json-api A library which integrated JSON APIs with Redux store
  • devour-client A lightweight, framework agnostic, highly flexible JSON API client
  • ts-angular-jsonapi A JSON API library developed for AngularJS in Typescript
  • ngrx-json-api A JSON API client for Angular 2 ngrx toolset.
  • json-api-normalizer Normalizes JSON API documents for state management solutions like Redux and Mobx

iOS

  • jsonapi-ios is a library for loading data from a JSON API datasource. Parses JSON API data into models with support for auto-linking of resources and custom model classes.
  • Spine is a Swift library for working with JSON API APIs. It supports mapping to custom model classes, fetching, advanced querying, linking and persisting.

Ruby

  • jsonapi-consumer a ruby library for consuming JSONAPI payloads.
  • JsonApiClient attempts to give you a query building framework that is easy to understand (similar to ActiveRecord scopes).
  • JsonApiParser a ruby library for parsing/validating/handling JSONAPI documents.
  • Munson is a ruby JSONAPI client that can act as an ORM or integrate with your models via fine-grained agnosticism. Easy to configure and customize. Includes a chainable/customizable query builder, attributes API and dirty tracking.
  • json-api-vanilla a reference-aware ruby library for JSONAPI deserialization that doesn't require setting up classes.

PHP

  • Art4 / json-api-client is a library for validating and handling the response body in a simple OOP way.
  • woohoolabs / yang is a PSR-7 compatible library that is able to build and send requests, and handle responses.

Dart

Perl

Java

  • jsonapi-converter is a Java JSON API v1.0 client. Besides providing means for serialisation/deserialisation, client comes with Retrofit plugin.

Android

  • faogustavo/JSONApi library for deserializing automatic. It can be integrated with retrofit. It has some ideas from Morpheus and jsonapi-converter but has some aditionals.
  • moshi-jsonapi serialize/deserialize JSON API v1.0 using fantistic Moshi API! With friendly Java interface and easy integration with Retrofit.
  • Morpheus library for deserializing your resources with automatic mapping for relationships. Uses gson to map objects in attributes.

R

  • rjsonapi is an R client to consume JSONAPI's.

Elm

  • elm-jsonapi provides decoders and helper functions for clients receiving JSON API payloads.
  • elm-jsonapi-http wraps elm-jsonapi and handles the details of content negotiation with JSON API-compliant servers, providing a smoother inteface for consumers.

.NET

  • JsonApiFramework [Client] is a portable .NET client-side framework for the reading, writing, and building of JSON API 1.0 documents based on the CLR domain model of the hypermedia API resources. Main features include building documents through a fluent-style progressive builder interface and automatic conversion between JSON API and CLR resources.
  • Hypermedia.JsonApi.Client is a set of extension methods to the HttpClient which allow for reading and writing of JSON API documents.

Python

  • jsonapi-requests Simple and fun high-level JSONAPI client for Python. Contains ORM which makes consuming the API even easier, in a DRY manner. It has a low-level API similiar to requests as well, which gives you all the flexibility that you may need.

Server libraries

PHP

Node.js

  • Fortune.js is a library that includes a comprehensive implementation of JSON API.
  • json-api turns an Express + Mongoose app into a JSON-API server.
  • endpoints is an implementation of JSON API using Bookshelf.
  • YAYSON is an isomorphic library for serializing and reading JSON API data. Simply use it with plain objects or extend it to fit your ORM (currently it has an adapter for Sequelize).
  • jsonapi-serializer is a Node.js framework agnostic library for serializing your data to JSON API.
  • jsonapi-server A feature-rich config-driven json:api framework.
  • loopback-component-jsonapi JSON API support for loopback highly-extensible, open-source Node.js framework
  • loopback-jsonapi-model-serializer JSON API serializer for loopback models.
  • jsonapi-mapper JSON API-Compliant Serialization for your Node ORM.
  • jaysonapi jaysonapi is a framework agnostic JSON API v1.0.0 serializer. jaysonapi provides more of a functional approach to serializing your data. Define a serializer with a type and schema, and call serialize on it passing in the data, included, meta, errors, etc. as a plain object.
  • json-api-ify serialize the **** out of your data. json api v1.0 complaint.
  • simple-jsonapi A node.js module for serializing objects to JSON API compliant documents. Very flexible whilst not caring about your choice of framework or database layer. Aims to cover the latest published version of the spec, which is currently 1.0.
  • bookshelf-jsonapi-params automatically apply JSON API filtering, pagination, sparse fieldsets, includes, and sorting to your Bookshelf.js queries.
  • Lux is a MVC style Node.js framework for building lightning fast JSON APIs.

Ruby

  • Jsonapi-for-rails empowers your JSONAPI compliant Rails APIs. Implement your APIs with very little coding.
  • ActiveModel::Serializers is one of the original exemplar implementations, but is slightly out of date at the moment.
  • The rabl wiki has a page describing how to emit conformant JSON.
  • RestPack::Serializer implements the read elements of json-api. It also supports paging and side-loading.
  • Oat ships with a JSON API adapter.
  • JSONAPI::Resources provides a complete framework for developing a JSON API server. It is designed to work with Rails, and provides routes, controllers, and serializers.
  • Yaks Library for building hypermedia APIs, contains a JSON API output format.
  • JSONAPI::Serializers provides a pure Ruby, readonly serializer implementation.
  • Roar Renders and parses represenations of Ruby objects
  • Jbuilder::JsonAPI Simple & lightweight extension for Jbuilder
  • JSONAPI::Utils works on top of JSONAPI::Resources taking advantage of its resource-driven style and bringing a Rails way to build modern APIs with no or less learning curve.
  • Sinja extends Sinatra and leverages JSONAPI::Serializers to enable rapid development of comprehensive, read-and-write, and JSON API v1.0-compliant web services using the DAL/ORM of your choice. It includes a simple role-based authorization scheme, support for client-generated IDs, patchless clients, and coalesced find requests, exception handling, and more.
  • jsonapi-rb Ruby library for efficiently building and consuming JSON API documents - with Rails and Hanami integrations.

Python

  • Hyp is a library for creating json-api responses.
  • SQLAlchemy-JSONAPI provides JSON API serialization for SQLAlchemy models.
  • django-rest-framework-json-api provides JSON API parsing and rendering for the Django REST Framework
  • jsonapi is a Django module with JSON API implementation.
  • jsoongia is a framework agnostic JSON API implementation.
  • ripozo provides a framework for serving JSON API content (among other Hypermedia formats) in Flask, Django and more.
  • marshmallow-jsonapi provides JSON API data formatting for any Python web framework.
  • neoapi serializes JSON API–compliant responses from neomodel StructuredNodes for Neo4j data
  • py-jsonapi is a toolkit for building a JSON API. Can be extended easily to work with every web framework and database driver. Extensions for Flask and SQLAlchemy are available.
  • xamoom-janus is a Python module to easily and fast extend Python web frameworks like Flask or BottlyPy with json:api functionality. Also offers a flexible mechanism for data mapping and hooks to intercept and extend its functionality according to your projects needs.
  • pyramid-jsonapi Auto-build a JSON API from sqlalchemy models using the pyramid framework.
  • Flask-Rest-JSONAPI Flask extension to create web api according to jsonapi specification with Flask, Marshmallow and data provider of your choice (SQLAlchemy, MongoDB, ...)

Go

  • api2go is a full-fledged library to make it simple to provide a JSON API with your Golang project.
  • jsonapi serializes and deserializes jsonapi formatted payloads using struct tags to annotate the structs that you already have in your Golang project. Godoc
  • go-json-spec-handler drop-in library for handling requests and sending responses in an existing API.
  • jsh-api deals with the dirty work of building JSON API resource endpoints. Built on top of jsh

.NET

  • JsonApiNet lets you quickly deserialize JSON API documents into C# entities. Supports compound documents, complex type mapping from attributes, attribute mapping, and more. See the README for full details.
  • JSONAPI.NET is a .NET library that integrates with ASP.NET WebAPI, Json.NET, and (optionally) Entity Framework to help you quickly create JSON API compliant web services.
  • NJsonApi is a .NET server implementation of the standard. It aims at good extensibility and performance while maintaining developer-friendliness with interchangable convenions and builder-style configuration.
  • Migrap.AspNet.Mvc.Jsonapi is an ASP.NET 5 (vNext) library that allows for existing code to build JSON API responses through output formatters.
  • Saule is a small JSON API 1.0 compatible library that integrates well with established Web API conventions. It has complete documentation and near 100% test coverage.
  • JsonApiDotNetCore is a .Net Core library built against Entity Framework. It creates the middleware routing and controller objects (which can be overriden) and can work as a replacement or an extension to the AspNetCore.MVC middleware.
  • JsonApiFramework [Server] is a portable .NET server-side framework for the reading, writing, and building of JSON API 1.0 documents based on the CLR domain model of the hypermedia API resources. Main features include building documents through a fluent-style progressive builder interface, automatic generation of JSON API standard hypermedia in links and relationships, automatic conversion between JSON API and CLR resources, support for JSON API compound documents, and support of HATEOAS for resource relationships and links through lambda predicates.
  • Hypermedia.JsonApi.WebApi is a Web API media type formatter for reading and writing JSON API. It supports an external resource model definition and natively includes related resources.

Java

  • katharsis has comprehensive coverage of standard allowing to create JSON:API compatible resources with dynamic relation based routing. Library consist of several integrations:
    • katharsis-core - Java based core library for Katharsis allowing to manage RESTful endpoints compliant with JSON API standard.
    • katharsis-rs - adapter for Katharsis core module for all compatible JAX-RS based frameworks.
    • katharsis-spring - adapter for Katharsis core module for Spring and Spring Boot framoworks.
    • katharsis-servlet - generic servlet/filter adapter for Katharsis core module. This module can be used in traditional servlet or filter based Java web applications, or even non-Servlet-API-based web applications such as Portal/Portlet, Wicket, etc.
  • Elide is a web framework supporting JSON API. Through annotation-based JSON API endpoint generation, Elide enables you to focus on your data model, security model, and business logic while avoiding unnecessary boilerplate. Moreover, through use of the JSON API Patch extension, Elide provides full support for database transactions.

Scala

  • scala-jsonapi A Scala library for producing JSON output (and deserializing JSON input) based on JSON API specification.

Elixir

  • ja_serializer is a behaviour and DSL to emit conforming JSON. Suitable for use in a Phoenix view or in a Plug stack.
  • jsonapi is a serializer and query parser built with plain old functions. Can parse and validate a JSONAPI compliant query and serialize Ecto Models or Elixir Structs into conforming JSON. Suitable for use in a Phoenix view, Plug Stack or anywhere you can call functions.

Haskell

  • json-api functions and datatypes for representing user-defined resources in accordance with the JSON-API specification.

Perl

  • PONAPI::Server is a Plack-based web server, providing a generic service adhering to the spec. just plug your data-repository & play.

Vala

Examples

Related Tools

Playground

  • json-api-document-viewer the flat json:api structure is a good way to express complex relationships between objects. However the same flatness makes it difficult for humans to "parse" these relationships. This tool visualises object relationships by visually nesting them.

Ruby

  • json-patch implementation of JSON Patch (rfc6902)
  • hana implementation of the JSON Patch and JSON pointer spec

Node.js

  • json-patch implementation of JSON Patch (rfc6902)

Python