以下に、GraphQL JSONスキーマを作成するための基本的な手順とコード例を示します。
- GraphQLスキーマの作成: GraphQLスキーマは、GraphQLサーバーがサポートするオブジェクト、フィールド、引数、データ型などを定義します。スキーマはSDL(Schema Definition Language)またはプログラムコードを使用して作成できます。
例えば、以下のようなGraphQLスキーマを考えてみましょう:
type Post {
id: ID!
title: String!
content: String!
tags: [String!]!
}
type Query {
getPosts: [Post!]!
getPost(id: ID!): Post
}
type Mutation {
createPost(title: String!, content: String!, tags: [String!]!): Post!
updatePost(id: ID!, title: String, content: String, tags: [String!]): Post
deletePost(id: ID!): Boolean!
}
このスキーマでは、"Post"というオブジェクトタイプが定義されており、"Query"と"Mutation"というルートタイプがあります。
- JSONスキーマの作成: JSONスキーマは、データの構造やバリデーションを定義するためのものです。GraphQLスキーマとは異なり、JSONスキーマは直接データの形式を定義します。
例えば、以下のようなJSONスキーマを考えてみましょう:
{
"type": "object",
"properties": {
"id": { "type": "string" },
"title": { "type": "string" },
"content": { "type": "string" },
"tags": {
"type": "array",
"items": { "type": "string" }
}
},
"required": ["id", "title", "content", "tags"]
}
このJSONスキーマでは、"id"、"title"、"content"、"tags"というプロパティが定義されています。
- コード例: GraphQLスキーマとJSONスキーマを作成したら、それぞれを使用してクエリやデータのバリデーションを行うコードを実装できます。
例えば、JavaScriptとApollo Serverを使用している場合、以下のようなコードでGraphQLスキーマを作成し、JSONスキーマをバリデーションに使用できます:
const { ApolloServer, gql } = require('apollo-server');
const { buildSchema, assertValidSchema } = require('graphql');
const Ajv = require('ajv');
// GraphQLスキーマの定義
const typeDefs = gql`
type Post {
id: ID!
title: String!
content: String!
tags: [String!]!
}
type Query {
getPosts: [Post!]!
getPost(id: ID!): Post
}
type Mutation {
createPost(title: String!, content: String!, tags: [String!]!): Post!
updatePost(id: ID!, title: String, content: String, tags: [String!]): Post
deletePost(id: ID!): Boolean!
}
`;
// JSONスキーマの定義
const jsonSchema = {
type: 'object',
properties: {
id: { type: 'string' },
title: { type: 'string' },
content:{ type: 'string' },
tags: {
type: 'array',
items: { type: 'string' }
}
},
required: ['id', 'title', 'content', 'tags']
};
// スキーマのバリデーション
const ajv = new Ajv();
const validate = ajv.compile(jsonSchema);
const isValid = validate(data); // データをバリデーション
// Apollo Serverの設定
const resolvers = {
Query: {
getPosts: () => { /* データ取得のロジック */ },
getPost: (parent, { id }) => { /* 特定のデータ取得のロジック */ }
},
Mutation: {
createPost: (parent, { title, content, tags }) => { /* データ作成のロジック */ },
updatePost: (parent, { id, title, content, tags }) => { /* データ更新のロジック */ },
deletePost: (parent, { id }) => { /* データ削除のロジック */ }
}
};
const server = new ApolloServer({ typeDefs, resolvers });
server.listen().then(({ url }) => {
console.log(`Server ready at ${url}`);
});
このコード例では、Apollo Serverを使用してGraphQLサーバーを立ち上げています。GraphQLスキーマとJSONスキーマを定義し、データのバリデーションにJSONスキーマを使用しています。
以上が、GraphQL JSONスキーマに関する基本的な情報とコード例です。これらの情報を活用して、ブログ投稿を作成する際の参考になれば幸いです。