grails - 在Grails 3中参数化UrlMappings

标签 grails grails-3.0

我有个想法,我想为这两个URL类别分配前缀。一类是

/baseurl/api/$controller

用于 protected REST URL,然后:
/baseurl/register/$action

用于当前一类不安全的URL

然后,我认为将/ api和/ register前缀存储在变量中会很好,这样,如果需要(例如我的安全性配置),可以在其他地方引用它们。但是,我无法在UrlMappings中使用它。似乎没有填充定义URL部分的变量。考虑下面的UrlMappings.groovy,其中我定义了一个SignupController.groovy来映射到注册,所有其他 Controller 与API相关:
class UrlMappings {
    static final API_URL_ROOT = "/api"
    static final REGISTER_URL_ROOT = "/register"
    static mappings = {
        API_URL_ROOT + "/$controller/$action?/$id?(.$format)?" {
            constraints {

            }
        }

        REGISTER_URL_ROOT (controller: "signup")

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

当它运行时,我只能直接通过根URL调用我的 Controller ,即localhost:8080/loginlocalhost:8080/signup,而我希望它是:
localhost:8080/api/v1/loginlocalhost:8080/register/signup
我该如何解决?

最佳答案

您可以使用组来分隔不同的api

http://mrhaki.blogspot.com/2013/11/grails-goodness-grouping-url-mappings.html?m=1

在你的情况下,它可能会变成这样

group("/api") { 
     "/$controller/$action?/$id?(.$format)?" { constraints { } }
     // PUT HERE ALL OTHER API MAPPING
} 

group("/register") { 
    "/$controller" {} 
    // PUT HERE ALL REGISTER MAPPINGS 
} 

如果您需要考虑api的版本,请执行此操作
group("/api") {
    "/$namespace/$controller/$action/$id?" {}
    // OR ANY OTHER MAPPING YOU NEED. Then in your controller define
    // static namespace = 'v1' 
    // for example for your v1 controllers.
}

然后,您可以根据需要将组声明为变量。
 static API="/api"

 group (API) { .... }

希望能为您带来帮助,即使不是很抱歉

关于grails - 在Grails 3中参数化UrlMappings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711819/

相关文章:

session - Spring Security预身份验证-给我一个新的 session ,即使主体未更改

grails 3 插件安装位置

maven - IntelliJ Idea 14 在 grails 应用程序调试中出错

hibernate - 如何知道/记录查询是否使用了 Hibernate 二级缓存?

grails - Grails 中的 ExpandoMetaClass 是否可以覆盖 Java 库中的行为?

spring-security - gsp 中的 Grails 3 Spring 安全标签

maven - 将 grails3 插件发布到 Artifact - 生成的 pom 的差异

java - 如何在 Grails 中使用组合键访问行?

grails - 使用连接表+额外的列使很多人陷入困境

unit-testing - Grails 2.4.3 单元测试数量不正确