![](/img/trans.png)
[英]Streaming an http response within a composed action in Play! Framework 2.1
[英]How to define a default Action for any http method in Play 2.1 (Scala)?
我正在使用2.1.1版的Play框架(Scala變體)編寫RESTful Web服務。
對於給定的資源,我希望能夠處理POST請求,但是對於其他任何方法,我都希望返回MethodNotAllowed響應。
我的路由文件嘗試(摘要):
# Item-related actions
POST /item controllers.ItemController.newItem
GET /item controllers.ApplicationController.methodNotAllowed
PUT /item controllers.ApplicationController.methodNotAllowed
DELETE /item controllers.ApplicationController.methodNotAllowed
HEAD /item controllers.ApplicationController.methodNotAllowed
OPTIONS /item controllers.ApplicationController.methodNotAllowed
PATCH /item controllers.ApplicationController.methodNotAllowed
但是我在Play控制台收到警告:
[warn] /home/bruno/Entwicklung/pServer/conf/routes:8: unreachable code
[warn] PUT /itemcontrollers.ApplicationController.methodNotAllowed
幾條截然不同的路線如何呈現出一些“無法到達的代碼”? 我知道應該為反向分辨率機制提供清晰的規則集,以便在不產生歧義的情況下進行操作,但是我現在感興趣的直接機制應該是開箱即用的。 或不?
從我的角度來看,由於這種情況在對REST服務進行編程時必須相當普遍,因此我確信這里缺少一些重要的東西。
如果您對解決此問題的最佳方法有任何建議,我將不勝感激。
您不應嘗試找出所有可能的錯誤訪問點來生成錯誤消息。 而是可以覆蓋應用程序的Global
對象中的onHandlerNotFound
方法。
改編自Play的官方文檔: ScalaGlobal
import play.api._
import play.api.mvc._
import play.api.mvc.Results.__
object Global extends GlobalSettings {
override def onHandlerNotFound(request: RequestHeader): Result = {
// implement methodNotAllowed controller Action
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.