十月 1, 2018 | 後端和Drupal

Decouple系列:JSONAPI基本GET應用統整

在使用了REST與JSONAPI之後,強烈的覺得JSONAPI就是我所想要的產生API的套件,若您還不是這麼了解JSON API與REST的差異,可以參考這篇文章Decouple系列:要用 JSON API 還是 REST API呢?,若你是新手,也沒有關係,可以參考我這篇文章,搭配好用的POSTMAN套件,來玩轉於API的世界中。這篇文章將會帶過基本JSONAPI的GET用法。學會後想必基本用前端框架拉後端資料,不會再有任何問題囉。

前言

在使用了REST與JSONAPI之後,強烈的覺得JSONAPI就是我所想要的產生API的套件,若您還不是這麼了解JSON API與REST的差異,可以參考這篇文章Decouple系列:要用 JSON API 還是 REST API呢?,若你是新手,也沒有關係,可以參考我這篇文章,搭配好用的POSTMAN套件,來玩轉於API的世界中。這篇文章將會帶過基本JSONAPI的GET用法。學會後想必基本用前端框架拉後端資料,不會再有任何問題囉。

安裝介紹

使用JSONAPI的目的很簡單,主要就是兩個重點統一API的模式還有隨裝隨用不需用任何設定。若您還不會安裝可以參考以下這篇文章

參考教學文章:Decouple系列:如何使用 JSON-API:安裝、基本使用

裡面描述相信是很清楚的:)

語法介紹

以下列出幾個最常用的Get語法介紹,若要使用可以搭配POSTMAN來進行檢測,也務必記得要將網址example.com換成個人的custom domain

  1. 列出全部Article文章
http://example.com/jsonapi/node/article
  1. 列出前十篇文章
http://example.com/jsonapi/node/article?page[limit]=10
  1. 列出第二頁的前十篇文章
http://example.com/jsonapi/node/article?page[limit]=10&page[offset]=10
  1. 排序結果
  • 發文時間由舊到新ASC
http://example.com/jsonapi/node/article?sort=created
  • 發文時間由新到舊DESC
http://example.com/jsonapi/node/article?sort=-created
  1. 篩選結果 在JSONAPI裡面,要進行篩選結果必須包含三個很重要的部分,分別是Path、operator、value

    1. path:在API資源中,Field的位置
    2. Operator:運算子
    3. Value:數值為何
  • 根據Title來進行篩選(以新知新訊的一篇文章為例)
http://example.com/jsonapi/node/news?filter[titleFilter][condition][path]=title&filter[titleFilter][condition][value]=久違了新網站上線
  1. 【很重要】只擷取特定幾個欄位(標題、發文時間、更新時間、內容)
http://example.com/jsonapi/node/blog?fields[node--blog]=title,created,changed,body
  1. 【很重要】Nest Include
https://example.com/jsonapi/node/works/d0a9f81e-cd45-45e2-b66c-dcb090a546d6?include=field_works_related,field_works_related.field_works_list_image

結論

在使用的過程中,對於常常有一大堆reference的Drupal來說,原本以為jsonapi遇到了瓶頸,後來仔細看了一下,jsonapi的include參數支援Nested Include,頓時讓我心都開了,這個好用的功能,幾乎已經可以解決所有的資料引用問題,著實非常好用,若今天考慮做Decouple專案,是個不錯的選擇。

參考資料

  1. Drupal JSONAPI 官方文件
  2. Drupal JSONAPI GET 官方文件

參考影片

  1. 官方Youtube頻道