👓
ColdFusionでGraphQLを使ってみる
定期的にColdFusion関連の記事を書いているmikoです。
次期バージョンのColdFusion Fortunaを少し触ってみたので、少しずつ紹介していきます。
ColdFusion Fortunaについて
「ColdFusion 2023」となるかは不明ですが、
コードネームは「Fortuna」らしく、古代ローマの運命の女神の名前らしいです。
(追加された機能が気になる方は、以下のサイトからオープンベータに参加して色々と試してみましょう)
GraphQL Client を使ってみる
残念ながらColdFusion Fortunaで追加されるのは、
GraphQL API Serverではなく、GraphQL Clientです。
なので、試すにはGraphQL API Serverは、別途用意する必要があります。
ですが、以下の記事を参考にすれば、すぐに準備できるのでやってみましょう!
作成したコード
import express from 'express'
import cors from 'cors'
import { graphqlHTTP } from 'express-graphql'
import { makeExecutableSchema } from '@graphql-tools/schema'
const app = express()
const port = 4000
const data = {
users: [
{ id: '001', name: 'Tanaka' },
{ id: '002', name: 'Miko' },
],
}
// Schema
const typeDefs = `
type User {
id: ID!
name: String!
}
type Query {
users: [User]
}
`
const resolvers = {
Query: {
users: (obj, args, context) => context.users,
},
}
const executableSchema = makeExecutableSchema({
typeDefs,
resolvers,
})
app.use(cors())
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
// Entrypoint
app.use(
'/graphql',
graphqlHTTP({
schema: executableSchema,
context: data,
graphiql: true,
})
)
app.listen(port, () => {
console.log(`Running a server at http://localhost:${port}`)
})
ちゃんと動いているか確認しておきましょう。
かなり前にNew Relicでアレコレしていた時に、GraphQLとトモダチになれた気がしましたが、
久々に触ってみると「どうクエリ書くんやっけ・・・???」って混乱しました。
それと、ColdFusion側ではパッケージ「graphqlclient」をインストールしておきましょう。
実際に使ってみる
以下のコードで取得できます。
<cfscript>
gqlClient = getGraphQLClient({
server_URL : "http://localhost:4000/graphql",
"raw_http_client" : true
});
gql = "
query {
users {
id
name
}
}
";
response = gqlClient.fetchResponse(gql, {});
writeDump(response);
</cfscript>
まとめ
少しずつ触れる機会が増えてきた(気がする)GraphQL、
勉強する機会がなかったので色々と触ってみようと思います。
Discussion