Grails 动态休息端点映射

Java头

在我的 UrlMappings 中,我定义了这个映射:

"/$controller/$action?/$id?(.$format)?"{}

现在我想添加一组版本 2 服务。

例如: URI 处的新服务: /api/myaction

我希望能够定义一个新的端点/api/v2/myaction,其中myaction将映射到一个名为myactionV2的新操作

杰夫·斯科特·布朗

有多种方法可以做到这一点,最佳解决方案取决于您未包含在问题中的一些因素。这是一个最接近问题的解决方案以及 OP 在上面添加的评论。

请参阅https://github.com/jeffbrown/javaheadendpoints 上的项目

https://github.com/jeffbrown/javaheadendpoints/blob/47f41b3943422c3c9e44a08ac646ecb2046972d1/grails-app/controllers/demo/v1/ApiController.groovy

package demo.v1

class ApiController {
    static namespace = 'v1'

    def myaction() {
        render 'This request was handled by version 1 of the api'
    }
}

https://github.com/jeffbrown/javaheadendpoints/blob/47f41b3943422c3c9e44a08ac646ecb2046972d1/grails-app/controllers/demo/v2/ApiController.groovy

package demo.v2

class ApiController {
    static namespace = 'v2'

    def myaction() {
        render 'This request was handled by version 2 of the api'
    }
}

https://github.com/jeffbrown/javaheadendpoints/blob/47f41b3943422c3c9e44a08ac646ecb2046972d1/grails-app/controllers/demo/v3/ApiController.groovy

package demo.v3

class ApiController {
    static namespace = 'v3'

    def myaction() {
        render 'This request was handled by version 3 of the api'
    }
}

https://github.com/jeffbrown/javaheadendpoints/blob/47f41b3943422c3c9e44a08ac646ecb2046972d1/grails-app/controllers/javaheadendpoints/UrlMappings.groovy

package javaheadendpoints

class UrlMappings {

    static mappings = {
        "/$controller/$action?/$id?(.$format)?"{
            constraints {
                // apply constraints here
            }
        }

        "/$controller/$namespace/$action/$id?(.$format)?" {
            // ...
        }

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

发送请求会产生我认为所请求的行为:

$ curl http://localhost:8080/api/v1/myaction
This request was handled by version 1 of the api
$ curl http://localhost:8080/api/v2/myaction
This request was handled by version 2 of the api
$ curl http://localhost:8080/api/v3/myaction
This request was handled by version 3 of the api

其他选项包括使用Versionhttp 标头,但由于上面的一些措辞,我认为这不是您想要的。

我希望这有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Grails映射对象

来自分类Dev

Grails映射/排序关联

来自分类Dev

Grails读取GORM映射

来自分类Dev

Grails spring 安全休息注入 tokenGenerator

来自分类Dev

Spring Security URL映射Grails

来自分类Dev

Grails 3.0.11映射HTTP动词

来自分类Dev

排序前的Grails映射值

来自分类Dev

Grails:创建动态SQL连接

来自分类Dev

Grails:创建动态SQL连接

来自分类Dev

Spring Security Grails 3.0 YML映射

来自分类Dev

Grails控制器映射,完全误解

来自分类Dev

如何在jQuery中遍历Grails映射

来自分类Dev

Grails mongodb映射类型给出了invalidStateException

来自分类Dev

Grails控制器映射,完全误解

来自分类Dev

未加载Grails网址映射布局

来自分类Dev

如何在Grails的闭包内部动态比较哈希映射键?

来自分类Dev

用于休息和其他操作的Grails UrlMappings

来自分类Dev

Grails spring 安全核心,spring 安全休息 IllegalStateException

来自分类Dev

在Grails中使用Json的动态Web服务

来自分类Dev

继承的Grails域类缺少动态属性

来自分类Dev

继承的Grails域类缺少动态属性

来自分类Dev

Grails动态脚手架错误

来自分类Dev

Grails中的动态查找器与条件查询

来自分类Dev

Grails中的动态数据库

来自分类Dev

Grails - 动态分配要搜索的表

来自分类Dev

Grails控制器和URL映射魔术

来自分类Dev

如何仅使用Grails中的嵌套映射创建ConfigObject?

来自分类Dev

Grails从请求访问未映射到特定域的JSON属性

来自分类Dev

如何在Grails网址映射中设置默认网址?