GraphQL、Apolloを利用して映画ネットワークを開発!
GraphQLでAPIを開発する。
これはノマドエンコーダ課程に基づいて作成された.
ノマドコード川のhttps://nomadcoders.co/graphql-for-beginners
参考資料https://graphql-kr.github.io/learn/
index.jsファイルを作成し、初期設定から開始します.
index.js
import { GraphQLServer } from "graphql-yoga";
import resolvers from "./graphql/resolvers";
const server = new GraphQLServer({
typeDefs: "graphql/schema.graphql",
resolvers,
});
server.start(() => console.log("graphql Server Running"));
}
まずGraphql-ヨガをインストールしてサーバーを作成します.npm i graphql-yoga
typeDefs:自分で作成したタイプを保存済みパスとして指定します.
解析器:作成したQueryを解析しなければ、サーバが正常に動作しません.
schema.graphql.js
type Movie {
id: Int!
title: String!
rating: Float
description_intro: String
language: String
medium_cover_image: String
genres: [String]
}
type Query {
movies(limit: Int, rating: Float): [Movie]!
movie(id: Int!): Movie
suggestions(id: Int!): [Movie]!
}
ムービーのtpeeを保存します.
Intは整数、Stringは文字列です.Int!
!フィールドがnon-nullableであることを意味します.これは、このフィールドを問い合わせると、GraphQLサービスが常に値を返すことを意味します. movies(limit: Int, rating: Float):
moviesはlimitとratingをパラメータとして受け入れます.結果のタイプは配列で、Movieを受信できるタイプです.
db.js
import axios from "axios";
const BASE_URL = "https://yts-proxy.now.sh/";
const LIST_MOVIES_URL = `${BASE_URL}list_movies.json`;
const MOVIE_DETAILS_URL = `${BASE_URL}movie_details.json`;
const MOVIE_SUGGESTIONS_URL = `${BASE_URL}movie_suggestions.json`;
BASE URLにURLを保存して映画apiを受信します.export const getMovies = async (limit, rating) => {
const {
data: {
data: { movies },
},
} = await axios(LIST_MOVIES_URL, {
params: {
limit,
minium_rating: rating,
},
});
return movies;
};
axiosを使用してapiを取得します.
params:limit、格付けを追加したのは、アーキテクチャで格付けを指定したからです. const {
data: {
data: { movies },
},
}
Es 6非構造化割り当ては、上述した表現を提供する.
const movies = data.dataと同じ意味export const getMovie = async (id) => {
// const { movie } = movie.data.data;
const {
data: {
data: { movie },
},
} = await axios(MOVIE_DETAILS_URL, {
params: {
movie_id: id,
},
});
return movie;
};
export const getSuggestions = async (id) => {
const {
data: {
data: { movies },
},
} = await axios(MOVIE_SUGGESTIONS_URL, {
params: {
movie_id: id,
},
});
return movies;
};
他に必要な内容を指定することもできます.
結果
DOCSでは、typeが設定されていることがわかります.query{
movies(limit:5, rating:2){
title
rating
language
id
}
}
上図のように、結果値は以下のようになります.
これでGraphQLを使用したAPIの作成が完了しました.
次の章では、作成したAPIで簡単なWebを作成します!!!
ありがとうございます.
Reference
この問題について(GraphQL、Apolloを利用して映画ネットワークを開発!), 我々は、より多くの情報をここで見つけました
https://velog.io/@rlaekals97/GraphQL-Apollo를-이용한-영화-웹-개발
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import { GraphQLServer } from "graphql-yoga";
import resolvers from "./graphql/resolvers";
const server = new GraphQLServer({
typeDefs: "graphql/schema.graphql",
resolvers,
});
server.start(() => console.log("graphql Server Running"));
}
npm i graphql-yoga
type Movie {
id: Int!
title: String!
rating: Float
description_intro: String
language: String
medium_cover_image: String
genres: [String]
}
type Query {
movies(limit: Int, rating: Float): [Movie]!
movie(id: Int!): Movie
suggestions(id: Int!): [Movie]!
}
Int!
movies(limit: Int, rating: Float):
import axios from "axios";
const BASE_URL = "https://yts-proxy.now.sh/";
const LIST_MOVIES_URL = `${BASE_URL}list_movies.json`;
const MOVIE_DETAILS_URL = `${BASE_URL}movie_details.json`;
const MOVIE_SUGGESTIONS_URL = `${BASE_URL}movie_suggestions.json`;
export const getMovies = async (limit, rating) => {
const {
data: {
data: { movies },
},
} = await axios(LIST_MOVIES_URL, {
params: {
limit,
minium_rating: rating,
},
});
return movies;
};
const {
data: {
data: { movies },
},
}
export const getMovie = async (id) => {
// const { movie } = movie.data.data;
const {
data: {
data: { movie },
},
} = await axios(MOVIE_DETAILS_URL, {
params: {
movie_id: id,
},
});
return movie;
};
export const getSuggestions = async (id) => {
const {
data: {
data: { movies },
},
} = await axios(MOVIE_SUGGESTIONS_URL, {
params: {
movie_id: id,
},
});
return movies;
};
query{
movies(limit:5, rating:2){
title
rating
language
id
}
}
Reference
この問題について(GraphQL、Apolloを利用して映画ネットワークを開発!), 我々は、より多くの情報をここで見つけました https://velog.io/@rlaekals97/GraphQL-Apollo를-이용한-영화-웹-개발テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol