728x90
반응형

이전 포스팅에서  GraphQL로 간단한 정보를 가져왔다

 

이제는 영화 오픈 API를 통해 정보를 가져와보자

 

우선 index.js에 GraphQL를 활용해서 서버를 구축하고 맵핑을 시작하자

 

이것은 이전포스팅과 동일하지만 다시한번 작성해보자

 


index.js

import { GraphQLServer } from "graphql-yoga";
import resolvers from "./graphql/resolvers"

const server = new GraphQLServer({
    typeDefs: "graphql/schema.graphql", // 스키마정의가 되어있는 곳을 Defs로 둔다
    resolvers   // 결과 값을 실행할곳을 성정한다 단지 이 4줄로 끝이다
});

server.start(() => console.log("Graphql server Running"));

 

그리고 가져올 영화 정보가 어떤 타입인지 지정해주어야한다

 

영화정보를 가져올때 어떠한 형식인지 지정해주어야 하는것이다

 


schema.graphql

type Movie {
    id: Int!
    title: String!
    rating: Float!
    summary: String!
    language: String!
    medium_cover_image: String!
}                   

type Query {       
    movies(limit: Int, rating: Float): [Movie]!      
}

 

그리고 db.js를 만드는데 여기서는 오픈 API를 연결한다

 

db.js에는 url주소가 필요하며 그리고 url에 쿼리스트링이 있다면 그 쿼리스트링을 동적으로 변수처리해서 

 

조건을 변경할 수 있다

 


db.js

import fetch from "node-fetch";
const API_URL = "https://yts.am/api/v2/list_movies.json?";

// Node.js에서 fetch를 할때 필요하다 node-fetch를 설치하자

export const getMovies = (limit, rating) => {
    let REQUEST_URL = API_URL;
    if (limit > 0) {
        REQUEST_URL += `limit=${limit}`;
    }
    if (rating > 0) {
        REQUEST_URL += `&minimum_rating=${rating}`;
    }
    return fetch(REQUEST_URL)
      .then(res => res.json())
      .then(json => json.data.movies);
}

 

그리고 resolvers.js를 만들어서 Query문을 작성해서 오픈API에서 가져올 정보를 핸들링할 수 있다

 


 resolvers.js

import { getMovies } from "./db";

const resolvers ={
    Query: {
        movies: (_, { rating, limit }) => getMovies(limit, rating)
    }
};

export default resolvers;

 

이러한 결과는 아래와 같이 나오게된다

 

영화 API 

 

다음 포스팅은 더 많은 데이터 조작을 하고 여러가지 함수활용을 해보겠습니다!

 

 

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel