gpt4 book ai didi

spring - grails UrlMapping 用于特定于版本的 API Controller

转载 作者:行者123 更新时间:2023-12-02 15:52:17 24 4
gpt4 key购买 nike

我正在 grails 3.1.6 平台上构建版本化 API,这就是我所拥有的:

package mysearch

类 UrlMappings {
static mappings = {
for(controller in grails.util.Holders.getGrailsApplication().controllerClasses) {
def cName = controller.logicalPropertyName
if(cName.endsWith('API')) {
def controllerName = cName.replace('API', '').replaceAll(/V(\d{1})/, '')
"/api/$version/${controllerName}/$action"(controller: controllerName + version + "API", action: action, parseRequest: true)
}
}

"500"(view:'/error')
"404"(view:'/notFound')
}

}

但是,当我尝试向 Postman 提交请求时,我得到了 404。
经过调查,我可以看到 UrlMappingInfo作为请求映射的一部分创建(匹配)的实例具有以下格式:“/api/(*)/merchant/(*)”
如果这些值将替换为适当的参数值,这似乎没问题,例如。/api/V1/merchant/find 这个 Postman 请求
http://localhost:9090/api/V1/merchant/find
但它们没有解决,显然 Grails 在其 mappingsToGrailsControllerMap 中找不到 Controller
当我调试请求并将 UrlMappingInfo 替换为“正确”值时,请求由我的 Controller 正确处理。我错过了什么? UrlMapping Controller 中的可能语法:区域?尝试在变量名前使用和不使用 $ 但没有运气。提前致谢!

最佳答案

结果并不那么容易,因为映射被评估一次,并且版本参数没有“扩展”为 Controller 名称。

关于spring - grails UrlMapping 用于特定于版本的 API Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37317324/

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