簡體   English   中英

如何在Play 2.1(Scala)中為任何http方法定義默認操作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM