实现
以下是实现 JSON:API 的项目。如果您希望您的项目列出,请 发送拉取请求。
注意:此规范于 2015 年 5 月 29 日标记为 1.0。以下实现尚未经过验证是否符合规范,但现在正在组装测试套件以对其进行审查。
客户端库
JavaScript
- ember-data 是最初的典范实现之一。现在有一个 官方适配器 来支持 json-api。
- backbone-relational-jsonapi 是 Backbone.Relational 的解析层。在 JSON:API 中指定的实体会自动解析为注入 Backbone.Relational 关系。
- orbit.js 是一个独立库,用于协调对数据源的访问并保持其内容同步。Orbit 的公共库包括 JSONAPISource,用于访问 JSON:API 服务器。Orbit 可以独立使用,也可以通过 ember-orbit 集成库与 Ember.js 一起使用。
- YAYSON 是一个用于序列化和读取 JSON:API 数据的同构库。扩展它以适合您的模型,或将其与普通对象一起使用。
- Ember JSON API 资源 是一个 Ember CLI 附加组件,用于在 Ember.js 应用程序中实现轻量级的数据持久化解决方案。
- hapi-json-api 是 hapi 框架的插件;它强制执行 Accept/Content-type 规则并将 Boom 错误重写为符合规范。
- jsonapi-datastore 是一个轻量级的独立库,用于读取、序列化和同步关系型 JSON:API 数据。
- superagent-jsonapify 是一个非常轻量级的(50 行)JSON-API 客户端附加组件,适用于 superagent(同构 ajax 客户端)。
- angular-jsonapi 是一个 AngularJS JSON:API 客户端。
- redux-json-api 是一个将 JSON:API 与 Redux 存储集成的库。
- devour-client 是一个轻量级、与框架无关、高度灵活的 JSON:API 客户端。
- json-api-normalizer 将 JSON:API 文档规范化为 Redux 和 Mobx 等状态管理解决方案。
- jsona 是一个数据格式化程序,它从 JSON 或存储的 reduxObject(json-api-normalizer 的结果对象)创建可自定义的简化对象,并从相同的简化对象创建正确的 JSON。
- active-resource 是一个独立的、遵循约定的 JavaScript ORM,它映射到您的 JSON:API 服务器,并允许通过流畅的界面进行高级查询和关系管理。
- redux-bees 是一个在 React+Redux 中与 JSON:API 交互的简洁、简短且声明式的方式。
- Coloquent 是一个 Javascript/Typescript 库,它将对象及其相互关系映射到 JSON:API,并提供类似于 ActiveRecord(例如类似于 Laravel 的 Eloquent)的简洁、流畅的语法来创建、检索、更新和删除模型对象。
- kitsu 是一个简单、轻量级且与框架无关的 JSON:API 客户端。
- Sarala JSON API 数据格式化程序 是一个简单且流畅的与框架无关的 javascript 库,用于将标准 JSON:API 响应转换为简单 JSON 对象,反之亦然。
- Sarala 是一个 javascript 包,它提供了类似于 Laravel Eloquent 的语法,以对根据 JSON:API 规范 构建的 JSON:API 执行 CRUD 操作。
- jsonapi-client 是一个方便的模块,用于使用 jsonapi 服务。
- JSORM 是一个同构的 ActiveRecord 克隆,它发出 JSON:API 请求而不是 SQL,并且是更大的 JSONAPI 套件 的一部分。
- jsonapi-vuex 是一个使用 Vuex 存储与 jsonapi 服务交互的模块,它通过重构/规范化记录来简化工作。
- heather-js 是一个用于将 JSONAPI 解析为 ES6 类中对象的库。
- @hyral/core - 一个高级、文档化、易于扩展且轻量级的 (JSON:)API 抽象库,具有类似 ORM 的 CRUD 支持、自动关系处理以及对多个(不同)后端的支持。
- @hyral/vue - Vue(x) 集成 @hyral/core 用于创建 Store 模块和 mixin。
- jsonapi-redux-data - 一个使 jsonapi 与 react + redux 集成变得轻松便捷的库。
- jsonapi-fractal 是受 Fractal(PHP)启发的 JSON:API 序列化器。
- ts-japi - 一个零依赖、高度模块化、js/ts 友好、递归、与框架无关的库,用于将数据序列化为 JSON:API 规范。它序列化了整个规范。
- mobx-async-store - 一个基于 Mobx 的存储,用于 JSON:API 规范的异步数据获取和状态管理。
- spraypaint - Graphiti 的 JS 客户端,类似于 ActiveRecord。使用 Typescript 编写,但在普通的 ES5 中也能正常工作。此库是同构的——在浏览器中使用它,或在 NodeJS 中使用它。
- json-api-models - 一个用于处理 JSON:API 数据的轻量级层。
- fetchja - 一个超级简单、现代且轻量级的库,用于处理 JSON:API(类似于 Kitsu,但使用 Fetch API 而不是 Axios)。
Typescript
- ts-angular-jsonapi 是一个为 AngularJS 在 Typescript 中开发的 JSON:API 库。
- ngrx-json-api 是 Angular 2 ngrx 工具集的 JSON:API 客户端。
- ts-jsonapi 是 Typescript 中的 JSON:API (反)序列化器。
- ngx-jsonapi 是一个用于 Angular 的快速 JSON:API 客户端库,带有存储+内存缓存。
- @crnk/angular-ngrx 是 ngrx-json-api 和(可选)crnk 的 Angular 辅助库。它便于将 UI 组件绑定到 ngrx-json-api,尤其是表格和表单。
- Grivet 是一个用 Typescript 编写的 JSON:API 客户端库,重点关注根据 HATEOAS 原则对资源进行 RESTful 遍历。
- DatX 是一个与 MobX 状态管理库一起使用的观点性数据存储,它使用 datx-jsonapi mixin 添加了 JSON:API 支持。
- jsonapi-fractal 是受 Fractal(PHP)启发的 JSON:API 序列化器。
- ts-japi - 一个零依赖、高度模块化、js/ts 友好、递归、与框架无关的库,用于将数据序列化为 JSON:API 规范。它序列化了整个规范。
- drupal-jsonapi-params 是一个库,用于在连接到 Drupal CMS 的 JSON:API 时构建查询参数。
- EntityStore.TS - 用于 TypeScript 的类似 ORM 的抽象层,包括可扩展的 提供程序,用于访问 JSON:API 服务器。
iOS
- jsonapi-ios 是一个库,用于从 JSON:API 数据源加载数据。它将 JSON:API 数据解析为模型,并支持自动链接资源和自定义模型类。
- Spine 是一个 Swift 库,用于处理 JSON:API API。它支持映射到自定义模型类、获取、高级查询、链接和持久化。
- Vox 是一个 Swift JSON:API 客户端框架,具有自定义模型类支持和良好的网络接口。
- Japx 是一个轻量级的 JSON:API 解析器,它将复杂的 JSON:API 结构扁平化为简单的 JSON,反之亦然。它通过将 Dictionary 传输到 Dictionary 来工作,因此您可以使用 Codable、Unbox、Wrap、ObjectMapper 或您喜欢的任何其他对象映射工具。它也支持 Objective-C。
- mattpolzin / JSONAPI 是一个 Swift Codable 库,非常重视类型安全性。它是平台无关的,因此它可以在客户端和服务器端使用。
- IzzyParser 是一个用于序列化和反序列化 JSON:API 对象的轻量级库。
- Datadog/swift-jsonapi 是一个 Swift 库,它提供宏来简化 JSON:API 响应的编码和解码。
Ruby
- jsonapi-consumer 是一个 ruby 库,用于使用 JSONAPI 负载。
- JsonApiClient 试图为您提供一个易于理解的查询构建框架(类似于 ActiveRecord 范围)。
- Munson 是一个 ruby JSONAPI 客户端,它可以充当 ORM 或通过细粒度的不可知论与您的模型集成。易于配置和定制。包括一个可链接/可定制的查询构建器、属性 API 和脏跟踪。
- json-api-vanilla 是一个引用感知的 ruby 库,用于 JSONAPI 反序列化,它不需要设置类。
- SimpleJSONAPIClient 为您提供了对 API 操作的更低级别控制,而您的模型及其关系则保持一个整洁的、类似 ActiveRecord 的界面。
- jsonapi-unwrapper 是一个简单且轻量级的库,用于反序列化 JSON:API 负载。
PHP
- Art4 / json-api-client 是一个库,用于以简单的 OOP 方式验证和处理响应主体。
- woohoolabs / yang 是一个与 PSR-7 兼容的库,它能够构建和发送请求,以及处理响应。
- enm/json-api-client 是基于 enm/json-api-common 的 json:api 规范的抽象客户端 PHP 实现。它允许您通过您自己的 http 客户端实现或通过 buzz 或 guzzle 客户端发送 json:api 请求。
- floor9design-ltd/json-api-formatter 是一个开源库,旨在用于生成和交互(制作和接收)JSON API 请求。它经过 100% 的单元测试,并且由作者积极维护。它易于与 Laravel/Symfony 等框架一起使用。
- swisnl/json-api-client 是一个用于将远程 {json:api} 资源映射到类似 Eloquent 的模型和集合的包。
Dart
- json_api 是一个适用于 Flutter/Web/VM 的完整客户端。
- rest_data 是一个基于
ember-data
概念的 REST API 客户端,其中包括一个 JSON:API 适配器。 - jsonapi_client 是一个用 Dart 编写的简单 JSON:API v1.0 客户端。
- japx 是一个轻量级的 JSON:API 解析器,它将复杂的 JSON:API 结构扁平化为简单的 JSON,反之亦然。
Perl
- PONAPI::Client 是一个简单/可扩展的 JSON:API v1.0 客户端。
Java
- jsonapi-converter 是一个 Java JSON:API v1.0 客户端。除了提供序列化/反序列化方法外,客户端还带有 Retrofit 插件。
- crnk.io 是一个用于客户端和服务器的 JSON:API 框架。在客户端方面,它针对 Java 和 Android 开发。至于后端,一组丰富的模块有助于集成各种 Java 框架。
- jsonapi 是一个基于 Square 的 Moshi 的 Kotlin 和 Java 库,用于简化 JSON:API 的使用。它具有强大的 API,支持 JVM(Java/Kotlin)和 Android。它支持反序列化和序列化,旨在用于客户端和服务器端。
Android
- faogustavo/JSONApi 是一个用于自动反序列化的库。它可以与 retrofit 集成。它从 Morpheus 和 jsonapi-converter 中借鉴了一些想法,但有一些额外的功能。
- moshi-jsonapi 使用神奇的 Moshi API 序列化/反序列化 JSON:API v1.0!它具有友好的 Java 接口,并易于与 Retrofit 集成。
- Morpheus 是一个库,用于通过自动映射关系来反序列化资源。使用 gson 将对象映射到属性中。
- Izzy JSONAPI 解析器 是一个库,用于反序列化和序列化资源,支持 Gson 和 Jackson 解析器。它还具有简单的 Retrofit 集成。
- JsonApiX 是一个注释处理器库,用于序列化和反序列化 Kotlin 类。它易于使用 - 设置只需要对类进行注释。包括 Retrofit 集成。
R
- rjsonapi 是一个 R 客户端,用于使用 JSONAPI。
Elm
- elm-jsonapi 为接收 JSON:API 负载的客户端提供解码器和辅助函数。
- elm-jsonapi-http 包装了
elm-jsonapi
并处理与 JSON:API 兼容服务器的內容協商细节,为使用者提供更平滑的接口。
.NET
- Hypermedia.JsonApi.Client 是 HttpClient 的一组扩展方法,允许读取和写入 JSON:API 文档。
- JsonApiSerializer 是一个无配置的 JSON:API 序列化和反序列化库,以 Json.NET
JsonSerializerSetting
的形式实现。它利用了 Json.NET 的现有功能和灵活性,同时为 JSON:API 和 CLR 对象之间提供了合理的默认映射。 - JsonApiFramework.Client 是一个便携式 .NET Standard/Core 客户端框架,开发人员可以通过配置和/或约定(称为服务模型)来定义超媒体 API 服务器资源的域模型。使用服务模型,开发人员可以使用一个文档上下文,该上下文表示与 JSON:API 复合文档的会话,用于读取或写入各种 JSON:API 抽象,例如资源、资源标识符、关系、链接、元信息、错误对象和版本信息,所有这些都序列化/反序列化为高级 CLR 对象。
- FSharp.JsonApi 是一个库,允许你使用 F# 轻松创建和使用遵循 JSON:API 规范的灵活、强类型 Web API。
- jsonapi-consumer 是一个简单的客户端 .NET Standard 包装框架,用于使用基于 JSON:API 的 API。
Python
- jsonapi-requests 是一款简单有趣的 Python 高级 JSONAPI 客户端。它包含 ORM,使使用 API 更容易,以 DRY 的方式。它还具有类似于 requests 的低级 API,这使你能够获得所有可能需要的灵活性。
- jsonapi-client 是一个全面且易于使用的 Pythonic ORM 类接口,用于访问 JSON:API 服务。
- json-api-doc 是一个 JSON:API 解析器,它返回一个简单的 Python 字典。
- json-api-smart 是一个具有 ORM 接口的 JSON:API。
服务器库
Swift
- aonawale / JSONAPISerializer 是一个服务器端 Swift 框架无关库,它实现了 JSON:API v1.0。
- mattpolzin / JSONAPI 是一个 Swift Codable 库,非常重视类型安全性。它是平台无关的,因此它可以在客户端和服务器端使用。
- Datadog/swift-jsonapi 是一个 Swift 库,它提供宏来简化 JSON:API 响应的编码和解码。
PHP
- tobyz / json-api-server 是一个框架无关的声明式 JSON:API 服务器实现。
- neomerx / json-api 是一个框架无关库,它完全实现了 JSON:API v1.0。
- limoncello-php / app 是一个 JSON:API v1.0 快速入门服务器应用程序,用于 neomerx / json-api.
- lode / jsonapi 是一个人性化的库,用于实现 JSON:API v1.1,而无需了解规范。
- woohoolabs / yin 是一个面向追求效率和优雅的高级用户的库。
- nilportugues / json-api 序列化转换器输出有效的 JSON 和 JSON:API 格式的 API 响应。
- nilportugues / symfony2-jsonapi-transformer Symfony 2 JSON:API Transformer Bundle 输出有效的 JSON 和 JSON:API 格式的 API 响应。
- nilportugues / laravel5-jsonapi-transformer Laravel 5 JSON:API Transformer 包输出有效的 JSON 和 JSON:API 格式的 API 响应。
- tuyakhov / yii2-json-api 是 Yii 框架的 JSON:API 规范的实现。
- json-api-php/json-api 试图将 JSON:API 规范翻译成一组高质量的单元/功能测试,并严格遵循 TDD 和 SOLID OOP 原则在 PHP 7 中实现。
- laravel-json-api/laravel 是 JSON:API 规范的 Laravel 实现,具有完整的功能支持和丰富的文档。
- FriendsOfCake/crud-json-api 是一个 CakePHP Crud 监听器,用于构建可维护的 JSON:API 兼容 API。
- thephpleague/fractal 是 JSON:API 规范的部分实现,允许轻松插入 JSON 渲染解决方案。
- oligus/jad 是一个库,它可以将 doctrine 实体自动转换为 json:api 资源或资源集合。
- enm/json-api-server 是一个基于 enm/json-api-common 的抽象服务器端 PHP (>= 7.2) 实现,用于实现 json:api 规范。它通过集中式处理方法,通过请求处理程序处理 json:api 请求。它可以与 psr-7-request/response 或你自己的请求和响应逻辑一起使用。
- enm/json-api-server-bundle 是一个 Symfony 捆绑包,它将 enm/json-api-server 集成到你的 Symfony 应用程序(Symfony 版本 ^4.0)中。
- raml-json-api 是基于 RAML 的 JSON:API 代码生成器,用于 Laravel。它生成控制器、中间件、模型、路由、迁移,并提供 JSON:API 服务。
- paknahad/jsonapi-bundle 是一个 Symfony 捆绑包。它是生成 API 的最快方法。
- swisnl/json-api-server 是一个 Laravel 包,可以在几分钟内启动并运行 JSON:API。
- hackerboy/json-api 是一个轻量级库,可以帮助你轻松实现 JSONAPI。
- drupal Drupal CMS 支持根据 JSON:API 规范公开其管理的所有数据(实体)。jsonapi_extras 是一个可选的额外模块,用于更改资源类型名称、字段名称等。
- bednic/json-api 是一个基于注解的库,用于从你的对象创建有效的 JSON API 响应文档。
- pz/doctrine-rest 库提供了使用 Doctrine 2 实现 JSON:API 的基本工具。
- pz/jsonapi-resource 使用 PHP 8.0 属性将 PHP 类对象序列化为 JSON:API 资源对象。
- binarcode/laravel-restify 是使用 Laravel 制作功能强大的 JSON:API 兼容 Rest API 的最快方法 参考文档.
- API Platform 是一个支持 JSON:API 的 API 优先框架。
Node.js
- Fortune.js 是一个库,它包含了 JSON:API 的全面实现.
- json-api 将 Express + Mongoose 应用程序转换为 JSON-API 服务器。
- endpoints 是使用 Bookshelf 实现的 JSON:API。
- YAYSON 是一个用于序列化和读取 JSON:API 数据的同构库。只需将其与普通对象一起使用,或将其扩展以适应你的 ORM(目前它有针对 Sequelize 的适配器)。
- jsonapi-serializer 是一个 Node.js 框架无关库,用于将你的数据序列化为 JSON:API。
- jsonapi-server 是一个功能丰富的、基于配置的 json:api 框架。
- jsonapi-store-memoryhandler 是用于快速原型设计的内存数据存储。
- jsonapi-store-relationaldb 是 jsonapi-server 的关系数据库处理程序。
- jsonapi-store-mongodb 是 jsonapi-server 的 mongodb 处理程序。
- jsonapi-store-elasticsearch 是 jsonapi-server 的 elasticsearch 处理程序。
- jagql 是一个资源驱动的框架,用于在最短时间内设置 {json:api} + GraphQL 端点。
- jagql/store-sequelize 将 jagql 资源持久化到 Postgres/MySQL/MSSQL/SQLite
- loopback-component-jsonapi 是 loopback 的 JSON:API 支持,这是一个高度可扩展的开源 Node.js 框架。
- loopback-jsonapi-model-serializer 是 loopback 模型的 JSON:API 序列化器。
- jsonapi-mapper 是 Node ORM 的 JSON:API 兼容序列化器。
- jaysonapi 是一个框架无关的 JSON:API v1.0.0 序列化器。jaysonapi 提供了更多针对数据序列化的函数式方法。定义一个带有类型和模式的序列化器,并对其调用 serialize 方法,将数据、包含内容、元数据、错误等作为普通对象传递。
- json-api-ify 将你的数据序列化。json:api v1.0 兼容。
- bookshelf-jsonapi-params 自动将 JSON:API 过滤、分页、稀疏字段集、包含内容、排序应用到你的 Bookshelf.js 查询中。
- Lux 是一个 MVC 风格的 Node.js 框架,用于构建闪电般的快速 JSON:API。
- jsonapi-mock 是一个受 json-server 启发的 jsonapi 模拟服务器。几乎可以在没有时间的情况下设置 jsonapi 模拟服务器,使用 lowdb。
- DenaliJS 是一个分层约定框架,用于构建雄心勃勃的 API。它包括一个强大的附加组件系统、一流的开发者体验和丰富的文档。
- jsonapi-fractal 是受 Fractal(PHP)启发的 JSON:API 序列化器。
- ts-japi - 一个零依赖、高度模块化、js/ts 友好、递归、与框架无关的库,用于将数据序列化为 JSON:API 规范。它序列化了整个规范。
- Kurier 是一个 TypeScript 框架,用于创建遵循 JSON:API 1.1 规范 + 操作提案规范 的 API。
- nestjs-json-api 用于 NestJS 和 TypeORM 的模块,实现 JSON API,支持终结点、查询参数、主体参数、验证和转换响应等功能。
Ruby
- 纯 Ruby
- Yaks 用于构建超媒体 API 的库,包含 JSON:API 输出格式。
- JSONAPI::Serializers 提供纯 Ruby、只读序列化器实现。
- JSONAPI::Realizer 提供纯 Ruby 模式,用于将 JSON:API 请求转换为模型(支持活动记录和 Rails 指令)
- Roar 渲染和解析 Ruby 对象的表示
- Jbuilder::JsonAPI Jbuilder 的简单且轻量级的扩展
- jsonapi-rb Ruby 库,用于高效地构建和使用 JSON:API 文档 - 集成 Rails 和 Hanami。
- fast_jsonapi Ruby 对象的闪电般快速的 JSON:API 序列化器。
- jsonapi_parameters Rails 方式使用 JSON:API 输入。
- Ruby on Rails
- Jsonapi-for-rails 赋能您符合 JSONAPI 规范的 Rails API。用很少的代码实现您的 API。
- ActiveModel::Serializers 是最初的示例实现之一,但目前略微过时。
- JSONAPI::Resources 提供一个完整的框架来开发 JSON:API 服务器。它旨在与 Rails 协同工作,并提供路由、控制器和序列化器。
- JSONAPI::Utils 在 JSONAPI::Resources 之上工作,利用其资源驱动的风格,以 Rails 方式构建现代 API,几乎不需要或更少的学习曲线。
- Caprese 一个有观点的 Rails 库,用于创建 JSON:API 服务器,让您专注于自定义端点的行为,而不是设置端点的繁琐工作。利用 ActiveModel::Serializer 的强大功能。
- JSONAPI Suite 促进一个能够进行深度查询和嵌套写入的服务器。适用于任何 ORM 或数据存储;附带集成测试帮助程序和自动 swagger 文档。
- JSONAPI.rb 一组可插拔的 mixin,提供对序列化(使用
fast_jsonapi
)、错误处理、包含、稀疏字段、分页、过滤(使用ransack
)和排序的支持。力求实现尽可能多的 JSONAPI 规范。代码库很小(~500 sloc),文档和测试覆盖率良好。 - Graphiti 一个基于 JSON:API 的 RESTful 资源 ruby 库。适用于原生 Ruby、Sinatra 和 Rails。
- Sinatra
- Sinja 扩展了 Sinatra 并利用 JSONAPI::Serializers 来实现快速开发全面、读写和符合 JSON:API v1.0 规范的 Web 服务,使用您选择的 DAL/ORM。它包括一个简单的基于角色的授权方案,支持客户端生成的 ID、无补丁的客户端和合并的查找请求、异常处理等等。
Python
- Hyp 是一个用于创建 json-api 响应的库。
- SQLAlchemy-JSONAPI 为 SQLAlchemy 模型提供 JSON:API 序列化。
- django-rest-framework-json-api 为 Django REST Framework 提供 JSON:API 解析和渲染
- jsoongia 是一个与框架无关的 JSON:API 实现。
- ripozo 为 Flask、Django 等提供了一个框架,用于提供 JSON:API 内容(以及其他超媒体格式)。
- marshmallow-jsonapi 为任何 Python Web 框架提供 JSON:API 数据格式。
- neoapi 为 Neo4j 数据的 neomodel 结构化节点序列化符合 JSON:API 的响应
- xamoom-janus 是一个 Python 模块,可以轻松快速地将 Flask 或 BottlyPy 等 Python Web 框架扩展为 json:api 功能。还提供了一种灵活的数据映射机制和钩子,可以根据您的项目需求拦截和扩展其功能。
- pyramid-jsonapi 使用 pyramid 框架从 sqlalchemy 模型自动构建 JSON:API。
- Flask-REST-JSONAPI Flask 扩展,使用 Flask、Marshmallow 和您选择的数据提供者(SQLAlchemy、MongoDB 等)根据 jsonapi 规范创建 Web API。
- Flump 与数据库无关的 JSON:API 构建器,依赖于 Flask 和 Marshmallow。
- SAFRS JSON API 框架 Flask-SQLAlchemy jsonapi 实现,具有自动生成的 openapi(fka swagger)接口。
- pydantic-jsonapi 使用 pydantic 进行 JSON:api 验证,带有 python 类型提示
- pydanja JSON:API 实现,用于 pydantic 和 FastAPI,使用泛型,并附带简化 OpenAPI 文档的帮助程序
- Flask-Restless-NG 使用 Flask 从 SQLAlchemy 模型构建 JSON:API
- starlette-jsonapi 在 Starlette 和 marshmallow-jsonapi 之上的微框架,支持异步 ORM
- kt.jsonapi 使用 Zope 组件体系结构生成 JSON:API 响应。
- Flask-COMBO-JSONAPI 用于构建 REST API 的 JSON:API flask 扩展。
- FastAPI-JSONAPI FastAPI-JSONAPI 是一个用于构建 REST API 的 FastAPI 扩展。
Go
- api2go 是一个完整的库,可以简化在 Go 项目中提供 JSON:API 的过程。
- jsonapi 使用结构标签对您在 Go 项目中已经存在的结构进行注释,来序列化和反序列化 jsonapi 格式的有效负载。 Godoc
- go-json-spec-handler 用于处理请求和发送响应的现有 API 的即插即用库。
- jsh-api 处理构建 JSON:API 资源端点的繁琐工作。建立在 jsh 之上。
- mfcochauxlaberge/jsonapi 提供了一套丰富的工具来构建符合 JSON:API 规范的服务。
- pieoneers/jsonapi-go Go 中轻量级的 JSON API 实现。让您的客户端和服务器应用程序在数小时内而不是数月内启用 JSON API。
.NET
- JsonApiDotNetCore 是一个框架,用于使用 .NET Core 和 Entity Framework Core 构建符合 json:api 规范的 REST API。通过提供开箱即用的功能,如排序、过滤和分页,它最大限度地消除了样板代码。您只需专注于定义资源和实现自定义业务逻辑。
- JsonApiNet 让您可以快速将 JSON:API 文档反序列化为 C# 实体。支持复合文档、属性的复杂类型映射、属性映射等等。 查看自述文件 以获取完整的详细信息。
- NJsonApi 是该标准的 .NET 服务器实现。它的目标是在保持开发人员友好性的同时,通过可互换的约定和构建器式配置来实现良好的可扩展性和性能。
- Migrap.AspNetCore.Hateoas 用于 ASP.NET Core 的 HATEOAS(超媒体作为应用程序状态的引擎)框架。当前实现:Siren、JsonApi。
- Saule 是一个小的 JSON:API 1.0 兼容库,可以很好地与已建立的 Web API 约定集成。它有完整的文档和近 100% 的测试覆盖率。
- Hypermedia.JsonApi.WebApi 是用于读取和写入 JSON:API 的 Web API 媒体类型格式化程序。它支持外部资源模型定义,并原生包含相关资源。
- JsonApiSerializer 是一个无配置的 JSON:API 序列化和反序列化库,以 Json.NET
JsonSerializerSetting
的形式实现。它利用了 Json.NET 的现有功能和灵活性,同时为 JSON:API 和 CLR 对象之间提供了合理的默认映射。 - JsonApiFramework.Server 是一个可移植的 .NET Standard/Core 服务器端框架,开发人员可以通过配置和/或称为服务模型的约定来定义超媒体 API 服务器资源的域模型。使用服务模型,开发人员可以使用代表与 JSON:API 复合文档的会话的文档上下文,用于读取或写入各种 JSON:API 抽象,如资源、资源标识符、关系、链接、元信息、错误对象和版本信息,所有这些都序列化/反序列化为高级 CLR 对象,并自动生成 JSON:API 超媒体。
- FSharp.JsonApi 是一个库,允许你使用 F# 轻松创建和使用遵循 JSON:API 规范的灵活、强类型 Web API。
- Felicity 是一个无样板的 JSON:API 框架,适用于您的函数式 F# 域模型,针对开发人员的幸福进行了优化
Java
- crnk.io 是一个适用于客户端和服务器的 JSON:API 框架。它是 Katharsis 的一个分支,在 Katharsis 失去开发动力 后启动。它具有相似的概念,但具有积极的开发支持。在服务器端,它提供了一套丰富的集成(Servlet、JAX-RS、Spring、JPA、Bean Validation、Zipkin 等)、使用 JSON Patch 的批量更新、用于自动化目的的元模型、用于 TypeScript 的客户端存根生成以及用于第三方贡献的模块 API。
- Elide 是一个支持 JSON:API 的 Web 框架。通过基于注释的 JSON:API 端点生成,Elide 使您能够专注于您的数据模型、安全模型和业务逻辑,同时避免不必要的样板代码。此外,通过使用 JSON:API Patch 扩展,Elide 提供了对数据库事务的全面支持。
- JSON:API for Spring HATEOAS 提供 Spring HATEOAS 表示模型的序列化/反序列化。该项目还提供了一个构建器,可以轻松创建关系、包含的资源对象、分页等等。
- jsonapi-rvp 利用 Jakarta EE 环境(以前称为 Java EE)中可用的平台功能,通过 JSON:API 公开 JPA 实体。功能包括查询和实体验证(使用 Bean 验证器)、分页、使用代理键作为记录标识符、支持 LEFT 外部连接条件以及一个简单的 JavaScript 客户端。
- JSON:API 对象转换器 使用视图模型(dto)中的注释将普通 Java 对象转换为 JSON:API 标准。
- Dashjoin 低代码开发平台 连接到关系型、文档和图形数据库,并通过 JSON:API 提供它们。该平台提供强大的访问控制机制、查询编辑器和图形布局设计器。
Scala
- scala-jsonapi 一个 Scala 库,用于基于 JSON:API 规范生成 JSON 输出(以及反序列化 JSON 输入)。
Elixir
- ja_serializer 是一种行为和 DSL,用于发出符合标准的 JSON。适用于 Phoenix 视图或 Plug 堆栈中使用。
- jsonapi 是一个使用普通函数构建的序列化器和查询解析器。可以解析和验证符合 JSONAPI 规范的查询,并将 Ecto 模型或 Elixir 结构序列化为符合标准的 JSON。适用于 Phoenix 视图、Plug 堆栈或任何您可以调用函数的地方。
Haskell
- json-api 提供符合 JSON-API 规范的函数和数据类型,用于表示用户定义的资源。
Perl
- PONAPI::Server 是一个基于 Plack 的 Web 服务器,提供符合规范的通用服务。只需插入您的数据存储库并开始使用。
Vala
- JSON-API-GLib 提供可以使用 JSON-GLib 序列化和反序列化的 GObjects。
Rust
- jsonapi-rust 一个 Rust 库,用于序列化、反序列化和处理 JSON-API 数据。
Dart
- json_api_server 是一个在 Dart VM 上运行的 JSON:API 服务器。
Crystal
- jsonapi-serializer-cr 是 Crystal Lang 的 JSON:API 序列化器。
示例
相关工具
Playground
- json-api-document-viewer 扁平的 json:api 结构是表达对象之间复杂关系的一种好方法。但是,相同的扁平性使得人类难以“解析”这些关系。此工具通过可视化嵌套来可视化对象关系。
- corroborate JSON:API 请求/响应负载验证器。它会在规范违规时发出警告,还会告知何时未遵循建议。
Ruby
- json-patch JSON Patch(rfc6902)的实现
- hana JSON Patch 和 JSON 指针规范的实现
JavaScript
- json-api-merge JSON:API 特定的冗余重复算法,用于将包含的资源合并到原始数据中
- json-patch JSON Patch(rfc6902)的实现
Python
- jsonpatch JSON Patch(rfc6902)的实现
- drf-json-patch 将 jsonpatch 集成到 Django REST Framework