gpt4 book ai didi

http - 如何为 Play 2.1 (Scala) 中的任何 http 方法定义默认操作?

转载 作者:可可西里 更新时间:2023-11-01 17:10:44 25 4
gpt4 key购买 nike

我正在使用 Play 框架(Scala 变体)2.1.1 版编写 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
}
}

关于http - 如何为 Play 2.1 (Scala) 中的任何 http 方法定义默认操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17601351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com