在Rails 6的API模式中使用GraphQL的方法(包括错误处理)
首先
我整理了一下使用Rails进行GraphQL的方法。
本文的目的是介绍仅仅实现必要的最低限功能,以及能够验证GraphQL的正常运行。(同时还附加了一些错误处理的方法。)
因此,没有进行查询的设置。
用Rails API模式开始构建GraphQL API,使用graphql-ruby库。
应用程序的制作
$ rails new demo-graphql --api #オプションで--apiをつけるとAPIモードでappを作成
在Gemfile中添加graphql和graphiql-rails(仅在开发环境中使用)。
gem 'graphql' #追加
group :development, :test do
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'graphiql-rails' #開発環境に追加
end
取消注释
require "sprockets/railtie" #コメントアウトを外す
在终端中执行以下操作。
$ bundle install
$ rails generate graphql:install #GraphQLに関するファイルが作成されます
在routes.rb文件中添加以下内容
Rails.application.routes.draw do
if Rails.env.development?
# add the url of your end-point to graphql_path.
mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "/graphql"
end
post '/graphql', to: 'graphql#execute' #ここはrails generate graphql:installで自動生成される
end
确认动作
如果无法连接到GraphiQL(在GraphiQL::Rails::Editors#show中的Sprockets::Rails::Helper::AssetNotPrecompiled错误),
无论查看哪篇文章,只有上述设置被介绍,并且直接实施会出错,所以介绍解决方法。
由于在API模式下创建时不会生成assets,这似乎是原因。
[Rails6][sprockets4.0.0] 当删除app/assets文件夹及其子文件以禁用Sprockets时,将会出现Sprockets::Railtie::ManifestNeededError错误。
请根据您的开发环境选择任何一种方式,都可以保证正常进行开发。
创建策略1:编写assets/config/manifest.js文件。
创建 assets/config/manifest.js 文件,并写入以下内容。
//= link graphiql/rails/application.css
//= link graphiql/rails/application.js
将‘sprocket’的版本降低到3.7.2这个补救措施2。
自从sprockets4.0.0版本开始,如果缺少assets文件会报错。
因此,只需降低版本即可解决该问题。
gem 'sprockets', '~> 3.7.2' #追加する
$ bundle update
结束了
这次我们把重点放在了让rails6能够使用GraphQL上。
关于如何创建查询并接收数据的实际步骤,请参考其他文章。