json - Grails中将JSON作为渲染标准的问题!在一个 Restful 服务中找到一个字段并进行渲染

标签 json rest grails render criteria

我有这段代码。我想在JSON中有一些行,以尝试使用条件来查找它。我想将每种情况都渲染为json。
示例:我希望表中具有Name:“pepito”的行。如果我放置params.nombre,但是我只希望JSON中的这一行怎么办呢?
我试图用findbyNombre(params.nombre)做到这一点,但是如果我在他的条件下加上if / else,那就找不到了。
请,有人可以帮我吗????我必须给我一份工作的代码,我迷路了!!!
谢谢!

case "GET":
    def criterios=CatalogoJson.createCriteria().list() {
        if (params.nombre) {
            eq('nombre',  params.nombre)
             //  render CatalogoJson.findByNombre(params.nombre)as JSON
        }
        if(params.id) {
            eq('id',  CatalogoJson.findById(params.id))
        }
    }
    render criterios as JSON

    break

最佳答案

我可能没有正确地预期到什么问题。我的假设是,您在请求中可以使用params(nombre或Id或两者)。基于此假设,您可以执行以下条件。注意:-我使用toInteger(),因为您提到的数据类型为int,通常ids是与GORM和Hibernate持久层结合使用的Long

def criterios = CatalogoJson.createCriteria().listDistinct {
        if(params.id) {
            idEq(params.id.toInteger())
        }
        if (params.nombre) {
            eq('nombre', params.nombre)
        }
    }

render criterios as JSON

更新
好吧,让我再尝试一次。再次,如果我没有正确地关注您,请告诉我。
您期望映射URL的方式不是RESTful的。相反,有一种最好的方法来实现您在REST服务中的期望:

令人愉快的方式或我喜欢这种方式
网址映射应如下所示
"/catalog/$id?"(resource: 'catalog')
//Controller Action:-
def show(){
    def criterios = CatalogoJson.createCriteria().list {
        if(params.id) { //check 1
            idEq(params.id.toInteger())
        } else if(params.name) { //check 2
            eq('name', params.name)
        } else if(params.year){ //check 3
            eq('year', params.year)
        } else if(params.others){ //check 4
            eq('others', params.others)
        } //so on an so forth //Can also use Switch case if you want
    }

    render criterios as JSON
}

用例:-
http://mydomain.com/catalog/134->应将id设置为134,并检查1
http://mydomain.com/catalog?name=Pep->应将name设置为Pep并检查2
http://mydomain.com/catalog?year=1987->应该将year设置为params作为1987并检查3

推断-
使用命名查询参数来针对您在REST服务和域中的需求逐项列出您的参数。如果要使用未命名的参数,则URL映射如下所示:
"/catalog/$id/$name?/$year?/$others?"(resource: 'catalog')
这种方法的问题是您的网址应类似于
http://mydomain.com/catalog/134
http://mydomain.com/catalog/134/Pep
http://mydomain.com/catalog/134/Pep/1987

您的可选参数不再是可选的。看看Optional Variables in URL mapping

关于json - Grails中将JSON作为渲染标准的问题!在一个 Restful 服务中找到一个字段并进行渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16712234/

相关文章:

java - 使用 Gradle 将 .jar 发布到私有(private) Maven

grails - 在 Grails Web 应用程序中使用 CSS3 @font-face

Javascript 在点击事件时显示 for 循环中点击的项目

rest - 在多对多关系中进行批量分配的适当 REST 端点是什么

c# - 将字符串保存到 FTP 服务器上的 txt 文件

url - RESTful URL:应该在哪里放置语言环境? example.com/en/page与example.com/page?locale=zh-CN

rest - 在 REST API 中,要获取资源,我应该在 url 中包含资源 ID 吗?

java - 从消息头 Grails 中提取消息 ID

json - 如何在 OpenAPI 中指定多文件上传?

javascript - Json 解析并总结 json 内的值