Posted at

Grails 3.Xのcreate-appでrest-apiプロファイルのアプリを作成する(2)

More than 1 year has passed since last update.


概要

Grails 3.2.7 でRESTのアプリのプロファイルを使ってお手軽にドメインを叩けるようにするまでのお話。前回はcreate-appからgenerate-allまでやったので、今回はRESTのAPIの叩き方とMySQL 5.7への接続の部分をまとめたいと思います。


使用環境


  • Windows7 64bit

  • posh-gvm

  • Grails 3.2.7

  • Groovy 2.4.9

  • MySQL 5.7.17

  • mysql-connector-java 6.0.6


手順


REST-APIの動作確認

前回作成したREST APIを叩く部分をもう少し掘り下げていきたいと思います。


MySQL 接続設定

Grails 3ではデフォルトのDB接続先はメモリDBのh2が指定されるようになっていて、これはこれで便利なのですが、実際にh2でプロダクト作ることはあんまりないと思うので、MySQLにつなぐやり方で接続の設定を入れていきたいと思います。


MySQL側セットアップ

ローカルにMySQL 5.7をインストールして、スキーマを作成する。

UTF8はutf8mb4を指定しておく。

WorkBench使えばGUIで設定できますが、念のためSQL書いておく。

CREATE SCHEMA myschema DEFAULT CHARACTER SET utf8mb4;


build.gradle

ビルドの依存関係にJDBCを追加しておく。

セントラルリポジトリは以下なので、適宜最新版なり対応しているバージョンを使う。

https://mvnrepository.com/artifact/mysql/mysql-connector-java

dependencies {

//runtime "com.h2database:h2"
runtime 'mysql:mysql-connector-java:6.0.6'
}


application.yml

Grails 3からConfig.groovyじゃなくてapplication.ymlで設定するのがお作法のようだ。

接続先データソースの設定とかは従来のGrailsやJDBCの接続URIと変わらないので、各自の環境に合わせて記載してください。

以下の例だとローカルに立てたMySQL 5.7のmyschemaにつなぐやり方です。

dialectは ORマッパー Hibernate の値を指定することになりますが、ドキュメント見ていくとMySQL57InnoDBDialectってのがあるのでコレっぽい感触。MySQL5Dialect とか MySQL5InnoDBDialect とかいろいろあってややこしい事この上ない。

https://docs.jboss.org/hibernate/orm/5.1/javadocs/org/hibernate/dialect/package-summary.html

environments:

development:
dataSource:
dbCreate: create-drop
url: jdbc:mysql://localhost:3306/myschema?useSSL=false&requireSSL=false&characterEncoding=utf8

dataSource:
pooled: true
jmxExport: true
driverClassName: com.mysql.cj.jdbc.Driver
dialect: org.hibernate.dialect.MySQL57InnoDBDialect
username: mysql
password: mysql

別記事でも書いてますが、SSLの設定はdevlopmentやらproductionで適宜変更してください。

昔とドライバのクラス名も変わってるので注意。

Windows環境だと出るっぽいトラブルもあったりします。