AnnictのGraphQL APIからデータを取得したい!
参照:アニメ視聴遅れ管理サービスの開発
Apollo Clientが便利なようです。
npm install apollo-boost react-apollo graphql-tag graphql --save
//APIエンドポイント
let url = let url = 'https://api.annict.com/graphql'
const client = new ApolloClient({
uri: url,
request: operation => {
operation.setContext({
headers: {
authorization: 'Bearer ' + code
}
})
}
})
このクエリは、ログインしているユーザ (viewer) の
見た作品 (state:WATCHED) を シーズン別降順 (orderBy: {field: SEASON, direction: DESC) でフィルタリングして返すという内容です。
let query = gql`{
viewer {
works(state: WATCHED, orderBy: {field: SEASON, direction: DESC}) {
nodes {
title
seasonName
seasonYear
}
}
}
}`
当初はタイトル画像のようなクエリのアプローチをしていたのですが、annictのdiscordコミュニティでannict作者のshimbacoさんに「こう書くといいですよ」と教えていただきました。
とりあえずコンソールにログを出力するところまで。
これをstoreに入れて表示してreact dndでソートするところまでが目標。
export const fetchWatchedTitles=(code)=>{
(async()=>{
let url = 'https://api.annict.com/graphql'
let query = gql`{
viewer {
works(state: WATCHED, orderBy: {field: SEASON, direction: DESC}) {
nodes {
title
seasonName
seasonYear
}
}
}
}`
const client = new ApolloClient({
uri: url,
request: operation => {
operation.setContext({
headers: {
authorization: 'Bearer ' + code
}
})
}
})
let response = await client.query({
query
})
if(response !== null){
console.log(response.data.viewer.works.nodes)
}
})().catch(
error=>{
console.log(error);
}
)
}
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント