- Web Engineer
- アウトバウンド営業
- Webエンジニア(リーダー)
- Other occupations (17)
- Development
- Business
※弊社エンジニアの記事になります。
はじめに
こんにちは、福岡オフィスでWebエンジニアとして働いているずおです!
今回は、GraphQLでデータ操作をしてみるというお題で記事を書いていきたいと思います。
よろしくお願いします。
GraphQLとは
一言で言うと「APIのクエリ言語」です。
REST APIと異なり、GraphQLは、基本的に1つのエンドポイントから、自分が欲しい情報だけを取得することができます。
RESTとGraphQLの対応関係は下記の通りです。
REST:GraphQL
取得 GET:Query
登録 POST:Mutation
更新 PATCH:Mutation
削除 DELETE:Mutation
では実際にGraphQLを利用してみましょう!
GraphQLサーバー構築
まずは、ディレクトリを作成し、package.jsonを作成します。
私はディレクトリ名をgraphql-backendとしました。
mkdir graphql-backend
cd graphql-backend
npm init -y
次に、apollo/serverとgraphqlライブラリのインストールを行います。
npm install @apollo/server graphql
インストール完了後、package.jsonにライブラリが追加されていればOKです!
{
"name": "graphql-backend",
"version": "1.0.0",
"description": "",
"main": "index.js",
"type": "module",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@apollo/server": "^4.7.4",
"graphql": "^16.7.1"
}
}
そして、schema.graqhqlファイルを作成し、スキーマを定義していきます。
# GraphQLスキーマを定義する
type Query {
info: String!
feed: [Link!]!
}
type Mutation {
post(url: String!, description: String!): Link!
}
type Link {
id: ID!
description: String!
url: String!
}
次にindex.jsファイルを作成し、先ほど別ファイルで定義したスキーマを読み込みます。
import { ApolloServer } from "@apollo/server";
import { startStandaloneServer } from "@apollo/server/standalone";
import { readFileSync } from "fs";
// schema.graphqlファイルを読み込む
const typeDefs = readFileSync("./src/schema.graphql", { encoding: 'utf-8' });
次にリゾルバを定義します。
スキーマで定義された型の取得方法を定義し、実際にデータ操作を行うのがリゾルバというものになります。
// リゾルバを定義する
const resolvers = {
Query: {
info: () => `github information`
}
};
スキーマとリゾルバが定義できたら、ApolloServerをインスタンス化し、
それをstartStandaloneServerに渡し、実際にサーバーが起動できているか確認します。
// ApolloServerをインスタンス化する
const server = new ApolloServer({
typeDefs,
resolvers
});
// startStartaloneServer関数にApolloServerインスタンスを渡す
const { url } = await startStandaloneServer(server, {
listen: { port: 4000 },
});
// console.logでサーバーのURLを表示する
console.log(`🚀 Server ready at ${url}`);
無事起動できました😀
記事の続きは下のリンクをクリック!
https://rightcode.co.jp/blog/information-technology/graphql-data-manipulation-syain
【2024年卒】新卒採用エントリー開始しました!
特設ページはこちら:https://rightcode.co.jp/recruit/entry-2024
インターン募集!未経験ok、チャレンジ精神ある方求む
ゲームプランナー:https://rightcode.co.jp/recruit/intern-game-planner
メディア運営:https://rightcode.co.jp/recruit/intern-media
社長と一杯飲みながらお話しませんか?(転職者向け)
特設ページはこちら: https://rightcode.co.jp/gohan-sake-president-talk
もっとワクワクしたいあなたへ
現在、ライトコードでは「WEBエンジニア」「スマホアプリエンジニア」「ゲームエンジニア」、「デザイナー」「WEBディレクター」「エンジニアリングマネージャー」「営業」などを積極採用中です!
有名WEBサービスやアプリの受託開発などの企画、開発案件が目白押しの状況です。
- もっと大きなことに挑戦したい!
- エンジニアとしてもっと成長したい!
- モダンな技術に触れたい!
現状に満足していない方は、まずは、エンジニアとしても第一線を走り続ける弊社代表と気軽にお話してみませんか?
ネット上では、ちょっとユルそうな会社に感じると思いますが(笑)、
実は技術力に定評があり、沢山の実績を残している会社ということをお伝えしたいと思っております。
- ライトコードの魅力を知っていただきたい!
- 社風や文化なども知っていただきたい!
- 技術に対して熱意のある方に入社していただきたい!
一度、【Wantedly内の弊社ページ】や【コーポレートサイト】をのぞいてみてください。
【コーポレートサイト】https://rightcode.co.jp/
【採用募集】https://rightcode.co.jp/recruit(こちらからの応募がスムーズ)
【wantedlyぺージ】https://www.wantedly.com/companies/rightcode