2013-11-22 37 views
0

我試圖讓Swagger在Play2應用程序中工作。我已經在build.sbt中加入了依賴。 "com.wordnik" %% "swagger-play2" % "1.3.1" 我已經定義了一系列路線。讓Swagger在Play2應用程序中工作斯卡拉

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

我也有一個模型,從Slick中提取數據,並有註釋。

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 
    } 
    } 
} 

這是我的控制器的樣子。

object Application extends Controller { 

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

} 

當我瀏覽到/ API的文檔的頁面呈現。

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

然後,如果我導航到/ api-docs/building,則不呈現任何內容。最後,當我導航到/建立我收到有效載荷。我不確定我還需要做什麼來讓Swagger生成它的數據。有人能指引我朝着正確的方向嗎?

回答

2

你可以發佈你的控制器實現嗎?錯誤很可能是由於缺少/不正確的註釋。

此外,檢查出https://github.com/wordnik/swagger-core/tree/master/samples/scala-play2爲一個很好的示例play2-swagger應用程序。

+0

我剛剛在上面添加了我的控制器實現。 – rross

+0

我相信你需要在控制器的頂層添加註釋,併爲每個你想要記錄的方法添加註釋。您還需要確保路由文件中定義了「/ api-docs/building」的路由。看看我發佈的示例應用程序的鏈接,以獲取如何執行這些操作的指導 – josephpconley