擴充功能與設定檔

JSON:API 規格提供了一種方法,可以使用擴充功能來定義基本規格未提供的功能。此外,它還提供了一種方法,可以使用設定檔在實作之間共享規格的特定用法。

一般來說,擴充功能提供了一種標準化功能的方法,這種功能並非廣泛需要到應該成為基本規格的一部分,但又足夠通用,可以讓社群受益於標準化。通常,這種功能也過於困難和/或非常規,以至於無法僅使用保留給實作的規格部分來實作(例如,實作可以將自己的成員添加到attributes物件中,但不能將新成員添加到資源識別碼中)。

另一方面,設定檔是一種標準化基本規格的常用用法的方法,這些用法可以僅使用保留給實作的規格部分輕鬆實作(例如,處理分頁的常用方法)。

擴充功能和設定檔之間的一個主要區別是,擴充功能必須由客戶端和伺服器雙方協商一致並理解,而如果客戶端或伺服器不識別設定檔,則可以安全地忽略它。

以下列出了一些有用的擴充功能和設定檔。但是,擴充功能或設定檔不需要出現在下方才有效。任何人都可以使用自己的網域作為其 URI 來編寫和託管擴充功能或設定檔文件。

為了保持 JSON:API 作為反自行車棚工具的承諾,強烈建議實作者重複使用、改進和協作共同的擴充功能和設定檔,而不是因為微不足道或美觀差異而建立新的擴充功能和設定檔。

此頁面上列出的擴充功能和設定檔已由 JSON:API 規格編輯審閱,並被認為

  • 與基本規格相容
  • 能夠在沒有向後不相容性的情況下發展
  • 廣泛可用

並非每個擴充功能或設定檔都能或應該出現在此頁面上。此列表會盡力維護。

擴充功能

  • 原子操作
    • URI:https://jsonapi.dev.org.tw/ext/atomic
    • 命名空間:atomic
    • 說明:此擴充功能提供了一種以線性和原子方式執行多個「操作」的方法。

設定檔

  • 游標分頁
    • URI:https://jsonapi.dev.org.tw/profiles/ethanresnick/cursor-pagination
    • 說明:基於游標的分頁(又稱鍵集分頁)是一種常見的分頁策略,可避免「偏移量-限制」分頁的許多陷阱。