Overview# This is a personal note on how to use Drupal’s JSON:API. This time, I will cover the use of include for taxonomies and multilingual processing.
Data# As shown below, the taxonomy “Assistant Professor” has been assigned to the position field.
/node/5
Additionally, content multilingualization is enabled, so the English versions of the title and position are also displayed as shown below.
/en/node/5
JSON:API# Since the above content was created with the content type “faculty”, the data list can be retrieved from the following URL.
/jsonapi/node/faculty/
Below shows the result excluding the links field. While the taxonomy ID is included in field_position, the label of that taxonomy is not included.
{ } " } " ] j , d s " " } a { } o v m t n e e " } a " " " } " } a r t l " t i a , r p s a i " } : y d t " " " " " " " " " " " " " " " " } " e " } " } " } " } i i " n s p " t d d l r r s t c c p s d r c c p , b l n , r , u , f " o : k e " [ e : r r r a e e t i r h r t e e o o a " " " o a o " } e " } i " } i " } : n s l h " i u u n v v a t e a o i f v n n t a p l d t d d v d d d e d " { " f r : " b p p g i i t l a n m c a i t t h l i a y i e a " " " } i a " " " } " a " " " } l a " " " } { : : " e 5 u a a c s s u e t g o k u s e e " i d n " o _ t t i m s t t i m : t t i m d t t i m : f " 8 t l l o i i s " e e t y l i n n : a " g : n t a y d e " i a y d e " a y d e " _ a y d e " " { " n 6 e _ _ d o o " : d d e " t o t t s : c s y " p " t d o " p " t d { " p " t d p " p " t d 1 { : o e s i i e n n : " " " : _ n _ _ { " o n h p : e : a r n : e : a r : e : a r o : e : a r . d f " n n " _ _ " : : : l _ t t : n d u i e " " u _ " " u " " u s " " u 0 " e 1 : t t : t l t 中 f a t r r u e l p " { : " : p u { : " : p { : " : p i { : " : p " h - d e e i o r 村 " " t a n r a a n l " l s : 8 a i 0 a 0 a t 6 a , t - 9 { r r " m g u 覚 2 2 r l g a n n u l : " " 4 { l d " b { l " b { l i " c { l t f - n n j e " e " 0 0 u s c n s s l , : { n 1 _ " u 0 _ u 0 _ o t e _ p a b a a a s : , , 2 2 e e o s l l l " o 9 i : s 0 i s 0 i n a 4 i : c 6 l l " t 3 3 , , d l a a , j { d 6 n e 1 n e 1 n " x 5 n / u 8 _ _ , a n - - e a t t a e 2 t { r e t r e t : o 8 t / l 0 _ _ m u 0 0 " t i i " _ f e - 4 e - 4 e n e e j t - n v p l 6 6 : i o o t 7 r - d r - d r { o 8 r s y 4 i i " l - - o n n y - n u - n u - n m - n o " 1 d d : , 0 0 t n _ _ p 9 a s e a s e a y 6 a n , f " " 8 8 r _ s o e 1 l e d l e d l _ d l a 9 : : " T T u a o u - c _ r 2 _ r 2 _ t 7 _ p - 2 0 0 e f u t - 8 _ " 9 _ " 9 _ e 9 _ i b 5 1 0 0 1 , f r d n - t , - t , - t r - t . 5 , 3 2 : : e c a o 4 a 4 a 4 a m 4 a o 4 , 3 4 0 c e t d 7 r a r a r - e r r b - 4 1 t " e e a g 5 g 5 g - d g g - 0 : : e : d _ 1 e 3 e 3 e p 1 e / 7 6 1 2 d " t - t - t - t o - t f e - 5 6 " " : y b _ 9 _ 9 _ s 9 _ o b 0 + + : u p 3 i 6 i 6 i i 6 i r c 8 0 0 n f e 3 d 0 d 0 d t 5 d m d T 0 0 n d a " 5 " d " d " i 3 " a c 0 : : u " l , - : - : - : o - : t 9 1 0 0 l , s e 9 9 n 5 / d : 0 0 l e a " c 1 c 1 " e 5 1 1 0 " " , , 4 f d d , c . 5 1 , , 9 a c c 1 0 4 : 4 c c c 7 / f 4 e u 3 3 8 " " 3 f l d d 5 , + e t 3 3 6 0 4 y a a 8 0 6 " d d b : 7 7 7 7 0 c 0 0 a 0 " " " " " , , , , ,
Using include# Add ?include=field_position to the query. As a result, the included field is added, and the value of the taxonomy term’s name field can also be obtained.
{ } " } " ] " ] j , d , i s " " } a { } n { } o v m t c n e e " } a " " " } " } l " " " } " } a r t l " t i a , r u t i a , r p s a i " } : y d t " " " " " " " " " " " " " " " " } " e " } " } " } " } d y d t " " " " " " " " " " " " " " " " } e " } " } " } " } i i " n s p " t d d l r r s t c c p s d r c c p , b l n , r , u , f e p " t d d l r r s n d w c d r c c c p l v , r , p , c " o : k e " [ e : r r r a e e t i r h r t e e o o a " " " o a o " } e " } i " } i " } d e : r r r a e e t a e e h e e o o o a " " " a i " } e " a " ] o " } : n s l h " i u u n v v a t e a o i f v n n t a p l d t d d v d d d e d " " i u u n v v a m s i a f v n n n t a p l t d d v d r d n d " { " f r : " b p p g i i t l a n m c a i t t h l i a y i e a " " " } i a " " " } " a " " " } l a " " " } : : " b p p g i i t e c g n a i t t t h l i a i " a " " " } i a e a { } t a " " " } { : : " e 5 u a a c s s u e t g o k u s e e " i d n " o _ t t i m s t t i m : t t i m d t t i m 6 u a a c s s u " r h g u s e e e " i d n o : t t i m s t n t e t t i m : f " 8 t l l o i i s " e e t y l i n n : a " g : n t a y d e " i a y d e " a y d e " _ a y d e " [ " c t l l o i i s : i t e l i n n n : a " g n a y d e " i a t a " " n a y d e " " { " n 6 e _ _ d o o " : d d e " t o t t s : c s y " p " t d o " p " t d { " p " t d p " p " t d t e e _ _ d o o " p " d t o t t t s : c s { " p " t d o " " " t i t " p " t d 1 { : o e s i i e n n : " " " : _ n _ _ { " o n h p : e : a r n : e : a r : e : a r o : e : a r a 4 s i i e n n : " t : " _ n _ _ _ { " o h : e : a r n : : : y d _ : e : a r . d f " n n " _ _ " : : : l _ t t : n d u i e " " u _ " " u " " u s " " u x 5 " n n " _ _ 助 i : l _ t t t : n d i " " u _ p " t " " u 0 " e 1 : t t : t l t 中 f a t r r u e l p " { : " : p u { : " : p { : " : p i { : " : p o 8 : t t : c l t 教 o 0 a t r r r u e p { : " : p u n { [ e : r { : " : p " h - d e e i o r 村 " " t a n r a a n l " l s : 8 a i 0 a 0 a t 6 a n e e e r o r " n , " n r a a a n l " s 4 a s u " a 0 a , t - 9 { r r " m g u 覚 2 2 r l g a n n u l : " " 4 { l d " b { l " b { l i " c { l o 8 { r r " e g u , " 2 g a n n n u l : " " 5 { l e l : " n " b { l t f - n n j e " e " 0 0 u s c n s s l , : { n 1 _ " u 0 _ u 0 _ o t e _ m - n n j a _ e : 0 c n s s s l , : t 0 _ r l v s u 0 _ p a b a a a s : , , 2 2 e e o s l l l " o 9 i : s 0 i s 0 i n a 4 i y 6 a a a t m , 2 o s l l l l " a e i " " i l s 0 i : c 6 l l " t 3 3 , , d l a a , j { d 6 n e 1 n e 1 n " x 5 n _ d l l " e e n 3 d l a a a , j { x 8 n : t r a e 1 n / u 8 _ _ , a n - - e a t t a e 2 t { r e t r e t : o 8 t t 7 _ _ , d s u - e a t t t a o e t a t t r e t / l 0 _ _ m u 0 0 " t i i " _ f e - 4 e - 4 e n e e e 9 _ _ " s l 0 " t i i i " n 8 e { x u i - 4 e j t - n v p l 6 6 : i o o t 7 r - d r - d r { o 8 r r - t r : a l 6 : i o o o o 5 r o a o - d r s y 4 i i " l - - o n n y - n u - n u - n m - n m 4 i e g , - o n n n m - n n l n u - n o " 1 d d : , 0 0 t n _ _ p 9 a s e a s e a y 6 a - e d v " e 0 t n _ _ _ y 4 a o " _ s e a n , f " " 8 8 r _ s o e 1 l e d l e d l _ d l - d " i 2 " 8 r _ s o c _ 8 l m u e d l a 9 : : " T T u a o u - c _ r 2 _ r 2 _ t 7 _ p 1 : s 0 : T u a o u r v 6 _ y i r 2 _ p - 2 0 0 e f u t - 8 _ " 9 _ " 9 _ e 9 _ o - i 2 0 e f u t e o 6 _ _ d " 9 _ i b 5 1 0 0 1 , f r d n - t , - t , - t r - t s 9 5 o 3 n 1 , f r d a c - t t " , - t . 5 , 3 2 : : e c a o 4 a 4 a 4 a m 4 a i 6 , n - u : e c a t a 4 a e : 4 a o 4 , 3 4 0 c e t d 7 r a r a r - e r t 5 _ 0 l 0 c e t e b 3 r r a r r b - 4 1 t " e e a g 5 g 5 g - d g i 3 i 6 l 0 t " e d u 7 g m { 5 g g - 0 : : e : d _ 1 e 3 e 3 e p 1 e o - d - , : e : d " l 3 e - 3 e / 7 6 1 2 d " t - t - t - t o - t n 5 " 0 3 d " : a - t - - t f e - 5 6 " " : y b _ 9 _ 9 _ s 9 _ " e : 8 1 " " : r 9 _ p 9 _ o b 0 + + : u p 3 i 6 i 6 i i 6 i , c T + : u " y 7 i o 6 i r c 8 0 0 n f e 3 d 0 d 0 d t 5 d 1 5 0 0 n f 2 - c d s 0 d m d T 0 0 n d a " 5 " d " d " i 3 " 7 , 1 0 t d a 0 - 2 " i d " a c 0 : : u " l , - : - : - : o - : 8 : : r " l 2 t - : t - : t 9 1 0 0 l , s e 9 9 n 5 5 0 0 u , s 3 a d i 9 / d : 0 0 l e a " c 1 c 1 " e 5 6 0 0 e e - x b " o c 1 1 1 0 " " , , 4 f d d , c 8 : " , , 0 o 2 p n d . 5 1 , , 9 a c c 1 b 3 , 6 n 5 o " c 0 4 : 4 c c c 7 7 1 - o 9 s , c / f 4 e u 3 3 8 a + 0 m a i 3 " " 3 f l d d 5 " 0 8 y c t d , + e t 3 3 6 , 0 T _ 3 i 3 0 4 y a a 8 : 0 v 8 o a 0 6 " d d b 0 1 o 1 n d : 7 7 7 7 0 : c f " 7 0 c 0 0 a " 0 a f 0 0 " " " " , 0 b " " " , , , , : u , , , 3 l 1 a + r 0 y 0 " : , 0 0 " ,
Furthermore, by using the fields query, you can reduce the size of the retrieved results as shown below.
/jsonapi/node/faculty/?include=field_position&fields[node–faculty]=title,field_position&fields[taxonomy_term–position]=name
{ } " } " ] " ] j , d , i s " " } a { } n { } o v m t c n e e " } a " " " } " } l " " " } a r t l " t i a , r u t i a p s a i " } : y d t " e " } d y d t " i i " n s p " t t l f e p " t n " o : k e " [ e : r i a i " } d e : r a : n s l h " i t t e d " " i m " { " f r : " b l i l a " " " } : : " b e { : : " e 5 u e o d t t i m 6 u " : f " 8 t " n _ a y d e " [ " c t : " { " n 6 e : s p " p " t d t e e 1 { : o e s h o : e : a r a 4 s " . d f " " i s " " u x 5 " 助 0 " e 1 : 中 p i { : " : p o 8 : 教 " h - d 村 s t 6 a n e " , t - 9 { 覚 " i " c { l o 8 { t f - " : o t e _ m - p a b n a 4 i y 6 : c 6 { " x 5 n _ d / u 8 : o 8 t t 7 / l 0 n e e e 9 j t - { o 8 r r - s y 4 m - n m 4 o " 1 y 6 a - e n , f _ d l - d a 9 t 7 _ p 1 p - e 9 _ o - i b r - t s 9 . 5 m 4 a i 6 o 4 - e r t 5 r b - d g i 3 g - p 1 e o - / 7 o - t n 5 f e s 9 _ " e o b i 6 i , c r c t 5 d 1 m d i 3 " 7 a c o - : 8 t 9 n 5 5 / d " e 5 6 1 1 , c 8 . 5 1 b 0 4 7 7 / f 8 a " " 5 " , 6 , 8 b 7 a " ,
Multilingual Support# Simply by appending the language to the URL, data in that language can be retrieved.
/en/jsonapi/node/faculty/?include=field_position&fields[node–faculty]=title,field_position&fields[taxonomy_term–position]=name
{ } " } " ] " ] j , d , i s " " } a { } n { } o v m t c n e e " } a " " " } " } l " " " } a r t l " t i a , r u t i a p s a i " } : y d t " e " } d y d t " i i " n s p " t t l f e p " t n " o : k e " [ e : r i a i " } d e : r a : n s l h " i t t e d " " i m " { " f r : " b l i l a " " " } : : " b e { : : " e 5 u e o d t t i m 6 u " : f " 8 t " n _ a y d e " [ " c t : " { " n 6 e : s p " p " t d t e e 1 { : o e s h o : e : a r a 4 s " . d f " " i s " " u x 5 " a 0 " e 1 : S p i { : " : p o 8 : s " h - d a s t 6 a n e s , t - 9 { t " i " c { l o 8 { i t f - o : o t e _ m - s p a b r n a 4 i y 6 t : c 6 u { " x 5 n _ d a / u 8 : o 8 t t 7 n / l 0 N n e e e 9 t j t - a { o 8 r r - s y 4 k m - n m 4 p o " 1 a y 6 a - e r n , f m _ d l - d o a 9 u t 7 _ p 1 f p - r e 9 _ o - e i b a r - t s 9 s . 5 " m 4 a i 6 s o 4 - e r t 5 o r b - d g i 3 r g - p 1 e o - " / 7 o - t n 5 f e s 9 _ " e o b i 6 i , c r c t 5 d 1 m d i 3 " 7 a c o - : 8 t 9 n 5 5 / d " e 5 6 1 1 , c 8 . 5 1 b 0 4 7 7 / f 8 a " " 5 " , 6 , 8 b 7 a " ,
Summary# Many features are implemented, and I found it very convenient. I hope this serves as a useful reference for others.