實作
以下是實作 JSON:API 的專案。如果您想將您的專案列出,請發送 Pull Request。
注意:此規格於 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 Resources 是一個Ember CLI 附加元件,提供輕量級的解決方案,用於在Ember.js應用程式中進行資料持久化。
- hapi-json-api 是 hapi framework 的插件;強制執行 Accept/Content-type 規則,並將 Boom 錯誤重寫為符合規格。
- jsonapi-datastore 是一個輕量級的獨立函式庫,用於讀取、序列化和同步關聯式 JSON:API 資料。
- superagent-jsonapify 是一個非常輕量級(50 行)的 JSON-API 用戶端附加元件,適用於同構 ajax 用戶端superagent。
- angular-jsonapi 是一個 AngularJS JSON:API 用戶端
- redux-json-api 是一個將 JSON:API 與 Redux store 整合的函式庫
- 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-like(例如類似於 Laravel 的 Eloquent)語法來建立、擷取、更新和刪除模型物件。
- kitsu 是一個簡單、輕量級且與框架無關的 JSON:API 用戶端
- Sarala JSON API data formatter 是一個簡單且流暢的框架無關 javascript 函式庫,可將標準 JSON:API 回應轉換為簡單的 JSON 物件,反之亦然。
- Sarala 是一個 javascript 套件,它提供類似Laravel Eloquent的語法,可以針對根據JSON:API 規格建構的 JSON:API 執行 CRUD 操作。
- jsonapi-client 一個方便的模組,用於使用 jsonapi 服務
- JSORM 是一個同構的 ActiveRecord 複製,它發出 JSON:API 請求而不是 SQL,並且是更大的 JSONAPI Suite 的一部分。
- jsonapi-vuex 一個使用 Vuex 儲存與 jsonapi 服務互動的模組,重新構建/正規化記錄以簡化生活。
- heather-js 一個將 JSONAPI 解析為 ES6 類別物件的函式庫。
- @hyral/core - 一個先進的、有文件說明的、易於擴展且輕量級的 (JSON:)API 抽象函式庫,具有類似 ORM 的 CRUD 支援、自動關係處理和多個(不同)後端支援。
- @hyral/vue - @hyral/core 的 Vue(x) 整合,用於建立 Store 模組和 mixins
- 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 - 類似於 ActiveRecord 的 Graphiti JS 用戶端。使用 Typescript 編寫,但也適用於普通的 ES5。這個函式庫是同構的 - 可以從瀏覽器或使用 NodeJS 的伺服器使用它。
- json-api-models - 一個用於處理 JSON:API 資料的輕量級層。
- fetchja - 一個超級簡單、現代且輕量級的函式庫,用於處理 JSON:API(類似 Kitsu,但使用 Fetch API 而不是 Axios)。
Typescript
- ts-angular-jsonapi 一個為 AngularJS 開發的 JSON:API 函式庫,使用 Typescript
- 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 伺服器的可擴展 provider。
iOS
- jsonapi-ios 是一個用於從 JSON:API 資料來源載入資料的函式庫。將 JSON:API 資料解析為模型,支援資源自動連結和自定義模型類別。
- Spine 是一個用於處理 JSON:API API 的 Swift 函式庫。它支援映射到自定義模型類別、擷取、進階查詢、連結和持久化。
- 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 一個用於使用 JSONAPI 有效負載的 ruby 函式庫。
- JsonApiClient 嘗試為您提供一個易於理解的查詢構建框架(類似於 ActiveRecord 範圍)。
- Munson 是一個 ruby JSONAPI 用戶端,可以充當 ORM 或透過細粒度的不可知論與您的模型整合。易於配置和自定義。包括一個可鏈式/可自定義的查詢構建器、屬性 API 和髒污追蹤。
- json-api-vanilla 一個用於 JSONAPI 反序列化的參考感知 ruby 函式庫,不需要設置類別。
- 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 parser 是一個支援 Gson 和 Jackson 解析器的資源反序列化和序列化函式庫。它也提供了簡單的 Retrofit 整合。
- JsonApiX 是一個用於序列化和反序列化 Kotlin 類別的註釋處理器函式庫。它易於使用,只需對類別進行註釋即可完成設定。包含 Retrofit 整合。
R
- rjsonapi 是一個用於使用 JSON:API 的 R 用戶端程式庫。
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 是一個簡潔且有趣的高階 JSONAPI Python 用戶端程式庫。包含 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 是一個適用於 neomerx / json-api 的 JSON:API v1.0 快速入門伺服器應用程式。
- 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 Package,以 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 Listener,用於構建可維護的 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 bundle,它將 enm/json-api-server 整合到您的 symfony 應用程式中 (symfony 版本 ^4.0)。
- raml-json-api 基於 RAML 的 JSON:API 程式碼產生器,適用於 Laravel。產生控制器、中介軟體、模型、路由、遷移並提供 JSON:API 服務。
- paknahad/jsonapi-bundle 是一個 Symfony bundle。這是產生 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 JSON:API 支援 loopback 高度可擴展的開源 Node.js 框架。
- loopback-jsonapi-model-serializer loopback 模型的 JSON:API 序列化器。
- jsonapi-mapper 適用於 Node ORM 的 JSON:API 兼容序列化器。
- jaysonapi jaysonapi 是一個與框架無關的 JSON:API v1.0.0 序列化器。jaysonapi 提供更偏向函數式的方法來序列化您的數據。使用類型和架構定義序列化器,並在其上調用 serialize,將數據、included、meta、errors 等作為純物件傳入。
- 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 規範 + Operations 建議規範 的 API。
- nestjs-json-api 一個用於 NestJS 和 TypeORM 的模組,用於實現 JSON API 支援的功能,例如端點、查詢參數、主體參數、驗證和轉換響應。
Ruby
- 純 Ruby
- Yaks 用於構建超媒體 API 的函式庫,包含 JSON:API 輸出格式。
- JSONAPI::Serializers 提供純 Ruby、唯讀的序列化器實現。
- JSONAPI::Realizer 提供一個純 Ruby 模式,用於將 JSON:API 請求轉換為模型(具有 active record 支援和 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 行程式碼),良好的文件和測試覆蓋率。 - Graphiti 一個基於 JSON:API 的 RESTful 資源 ruby 函式庫。適用於原生 Ruby、Sinatra 和 Rails。
- Sinatra
- Sinja 擴展了 Sinatra 並利用 JSONAPI::Serializers 來使用您選擇的 DAL/ORM 快速開發全面、可讀寫且符合 JSON:API v1.0 的 Web 服務。它包括一個簡單的基於角色的授權方案、支援客戶端生成的 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 StructuredNodes 序列化 JSON:API 兼容的響應。
- xamoom-janus 是一個 Python 模組,可以輕鬆快速地使用 json:api 功能擴展 Python Web 框架,例如 Flask 或 BottlyPy。還提供了一個靈活的數據映射機制和鉤子,可以根據您的項目需求攔截和擴展其功能。
- pyramid-jsonapi 使用 pyramid 框架從 sqlalchemy 模型自動構建 JSON:API。
- Flask-REST-JSONAPI Flask 擴展,用於根據 jsonapi 規範使用 Flask、Marshmallow 和您選擇的數據提供程序(SQLAlchemy、MongoDB 等)創建 Web api。
- Flump 依賴於 Flask 和 Marshmallow 的資料庫無關 JSON:API 建構器。
- SAFRS JSON API Framework 具有自動生成的 openapi(fka swagger)界面的 Flask-SQLAlchemy jsonapi 實現。
- pydantic-jsonapi 使用 pydantic 進行 python 類型提示的 JSON:api 驗證。
- pydanja 使用泛型類型為 pydantic 和 FastAPI 實現 JSON:API,並提供簡化 OpenAPI 文件的輔助工具。
- Flask-Restless-NG 使用 Flask 從 SQLAlchemy 模型構建 JSON:API。
- starlette-jsonapi 基於 Starlette 和 marshmallow-jsonapi 的微框架,支援非同步 ORM。
- kt.jsonapi 使用 Zope 組件架構生成 JSON:API 回應。
- Flask-COMBO-JSONAPI JSON:API flask 擴展,用於構建 REST API。
- FastAPI-JSONAPI FastAPI-JSONAPI 是一個 FastAPI 擴展,用於構建 REST API。
Go
- api2go 是一個功能齊全的函式庫,可以輕鬆地為您的 Golang 項目提供 JSON:API。
- jsonapi 使用結構標籤註釋您在 Golang 項目中已有的結構來序列化和反序列化 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# 實體。支援複合文件、屬性的複雜類型映射、屬性映射等。詳情請參閱 README。
- NJsonApi 是標準的 .NET 伺服器實現。它的目標是良好的可擴展性和性能,同時通過可互換的約定和構建器樣式配置保持開發人員友好性。
- Migrap.AspNetCore.Hateoas ASP.NET Core 的 HATEOAS(超媒體作為應用程序狀態的引擎)框架。目前實現:Siren、JsonApi。
- Saule 是一個小型 JSON:API 1.0 兼容函式庫,可與已建立的 Web API 約定良好集成。它有完整的文檔和接近 100% 的測試覆蓋率。
- Hypermedia.JsonApi.WebApi 是一個 Web API 媒體類型格式化程序,用於讀取和寫入 JSON: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 是一個適用於您的函數式 F# 域模型的無樣板 JSON:API 框架,針對開發人員的幸福感進行了優化。
Java
- crnk.io 是一個適用於客戶端和伺服器的 JSON:API 框架。它最初是 Katharsis 的一個分支,在後者失去發展動力後開始發展。它具有類似的概念,但擁有積極的開發支援。在伺服器端,它帶有豐富的整合套件(Servlet、JAX-RS、Spring、JPA、Bean Validation、Zipkin 等),使用 JSON Patch 進行批量更新,用於自動化的元模型,為 TypeScript 生成客戶端 Stub,以及用於第三方貢獻的模組 API。
- Elide 是一個支援 JSON:API 的 Web 框架。透過基於註釋的 JSON:API 端點生成,Elide 使您可以專注於您的數據模型、安全模型和業務邏輯,同時避免不必要的樣板程式碼。此外,透過使用 JSON:API Patch 擴展,Elide 提供了對資料庫事務的完整支援。
- 適用於 Spring HATEOAS 的 JSON:API 提供 Spring HATEOAS 表示模型的序列化/反序列化。該專案還提供了一個構建器,可以輕鬆創建關聯、包含的資源物件、分頁等。
- jsonapi-rvp 利用 Jakarta EE 環境(以前稱為 Java EE)中可用的平台功能,透過 JSON:API 公開 JPA 實體。功能包括查詢和實體驗證(使用 Bean Validators)、分頁、使用代理鍵作為記錄識別碼、支援 LEFT 外部聯接條件,以及一個簡單的 JavaScript 客戶端。
- JSON:API 物件轉換器 使用 viewmodels (dtos) 中的註釋將普通的 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 序列化和反序列化有效負載的 GObject。
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 整合