2012-08-29 17 views
0

我想要定義一個webservice,使用Scalatra,其中的參數傳遞到主體中,最好是JSON,沒有url上的所有內容,就像我現在擁有的一樣。嘗試使用JSON參數定義Scalatra webservice

所以,我想這個測試通過,但註釋掉的代碼是目前通過的。未評論的代碼不是JSON,但我也不確定如何通過JSON進行測試,因爲put需要在第二個參數中使用Iterable。

class WebAppSpec extends MutableScalatraSpec { 
    addServlet(classOf[WebApp], "/*") 
    "PUT /phaseupdate" should { 
    "return status 200" in { 
     //put("/phaseupdate/test1/address1/starting/10") { 
     put("/phaseupdate", Map("filename" -> "test1", "entryaddress" -> "address1","name" -> "starting","percentcomplete" -> "10")) { 
     status must_== 200 
     } 
    } 
} 

我目前的定義,這是不對的,是:

put("/phaseupdate/:filename/:entryaddress/:name/:percentcomplete") { 
    val filename = params("filename") 
    val entryaddress = params("entryaddress") 
    val name = params("name") 
    val percentcomplete = params("percentcomplete") 

那麼,如何定義我put服務只是PUT /phaseupdate調用它,並且在體內的參數?

我想限制什麼會進入Web服務器訪問日誌,基本上。

回答

1

解決的辦法是要做到這一點:

put("/phaseupdate") { 
    val filename = if (params("filename").indexOf('.') > -1) params("filename").substring(0, params("filename").indexOf('.')) else params("filename") 
    val entryaddress = params("entryaddress") 
    val name = params("name") 
    val percentcomplete = params("percentcomplete") 

基本上,params()可以讀什麼過去了。

specs2測試是,如果這是後面的get它返回正確的信息。

"PUT /phaseupdate" should { 
    "return status 200" in { 
     put("/phaseupdate", Map("filename" -> "test1", "entryaddress" -> "address1", "name" -> "starting", "percentcomplete" -> "10")) { 
     status must_== 200 
     } 
    } 
    } 
相關問題