2013-05-27 9 views
5

私はScalaで書かれた内部REST APIを文書化していますが、残念ながらSwaggerを統合することはできません。したがって、今はdocジェネレータ用の社内ソリューションを用意しています。 JSON-Schemaを生成して、リソースを取得する際のレスポンスの仕組みを示したいと思います。すでにモデル化されたケースクラスを利用してこれを行うためのショートカットがあるかどうかは疑問です。Scalaケースクラス階層からJSONスキーマを取得する方法はありますか?

答えて

3

autoschemaプロジェクトでは、ScalaのケースクラスからJSONスキーマを書き出すことができます。次のようにあなたはそれを使用することができます。

case class MyType(myValue: Int) 
AutoSchema.createSchema[MyType] 

をMavenのアーティファクトが使用できなくするようですが、あなたは、ソースをコピージャーを構築したりと依存関係として追加することができますいずれかのように、それはGitHubの上で利用可能SBTプロジェクトですあなたのbuild.sbtに次のように置くことによってSBT:

lazy val autoschemaProject = 
    ProjectRef(uri("https://github.com/coursera/autoschema.git"), "autoschema") 

lazy val root = (project in file(".")).dependsOn(autoschemaProject) 

私はSBT 0.13.7でこれをテストしました。 autoschemaには独自の依存関係(主にplay-json 2.3.2)があるので、プロジェクトの依存関係とバージョンの競合を避けるために、バージョンを変更する必要があるかもしれません。

1

@mziccardと記載されているように、オートスケマが行く方法です。しかし、メインリポジトリに何らかのアクティビティがあったのでしばらくしています。私はそれをフォークし、その依存関係や廃止予定のコード(他のフォークで行われた作業、私は単にそれを組み合わせた)を更新するのに時間をかけました。それは、今の私のフォークの下の中央のmavenで公開されている:

https://github.com/sauldhernandez/autoschema

あなたはbuild.sbtでこれを置くことによって、それを使用することができます。

libraryDependencies += "com.sauldhernandez" %% "autoschema" % "1.0.0"

関連する問題