rross
rross

Reputation: 2276

Getting Swagger to work in Play2 Scala

I'm attempting to get Swagger working in a Play2 application. I've include the dependancy in build.sbt. "com.wordnik" %% "swagger-play2" % "1.3.1" I've defined a series of routes.

GET     /api-docs                   controllers.ApiHelpController.getResources
GET     /api-docs/building           controllers.ApiHelpController.getResource(path = "/building")
GET     /building                   controllers.Application.building

I also have a model that pulls data from Slick and has annotations.

package models

import scala.slick.driver.SQLServerDriver.simple._
import play.api.libs.json._
import play.api.db.DB
import play.api.Play.current
import Database.threadLocalSession

@XmlRootElement(name = "Building")
case class Building(@XmlElement(name = "BuildingCode") BuildingCode: String,
                    @XmlElement(name = "BuildingDescription") BuildingDescription: String)

object Building {

  lazy val database = Database.forDataSource(DB.getDataSource())
  implicit val BuildingReads = Json.reads[Building]
  implicit val BuildingWrites = Json.writes[Building]

  val BuildingTable = new Table[Building]("building"){
    def BuildingCode = column[String]("BuildingCode", O.PrimaryKey)
    def BuildingDescription = column[String]("BuildingDescription")
    def * = BuildingCode ~ BuildingDescription <> (Building.apply _, Building.unapply _)
  }

  def getAll: Seq[Building] = {
    database withSession {
      val q = Query(BuildingTable)
      q.list
    }
  }
}

Here is what my controller looks like.

object Application extends Controller {

  def building = Action {
    Ok(Json.toJson(Building.getAll))
  }

}

When I navigate to /api-docs the page renders.

{"apiVersion":"beta","swaggerVersion":"1.2"}

Then if I navigate to /api-docs/building nothing is rendered. Finally when I navigate to /building I receive the payload. I'm not sure what else I have to do for Swagger to generate it's data. Can someone point me in the right direction?

Upvotes: 0

Views: 615

Answers (1)

josephpconley
josephpconley

Reputation: 1723

Can you post your controller implementation? The error is most likely due to missing/improper annotations.

Also, check out https://github.com/wordnik/swagger-core/tree/master/samples/scala-play2 for a good sample play2-swagger app.

Upvotes: 2

Related Questions