REST URL 映射不起作用(Grails 1.3.3、Tomcat6)
Posted
技术标签:
【中文标题】REST URL 映射不起作用(Grails 1.3.3、Tomcat6)【英文标题】:REST URL mappings not working (Grails 1.3.3, Tomcat6) 【发布时间】:2011-03-19 08:28:55 【问题描述】:我是 Grails 新手(但不是 Groovy 或 Web 开发)。
我正在尝试编写一个接受 REST 请求的网络应用程序。我遇到的问题是,尽管遵循 - 据我所知 - 文档,但在点击我认为正确的 URL 时,我仍然收到 404。
详情如下。
该项目是全新的(使用 Grails 1.3.3 和支持 1.3.3 的 Intellij IDEA 9.0.3)
一个非常简单的测试控制器:
package com.myproject
class TestController
def index =
def list =
System.out.println("params = " + params);
def save =
System.out.println("params = " + params);
和同样的 URL 映射,尝试将所有 GET 请求映射到控制器的 list() 方法。根据文档和 Grails in Action 一书,映射中的“测试”控制器名称将映射到 TestController。
class UrlMappings
static mappings =
"/test" (controller: "test")
action = [ GET: "list", POST: "save" ]
"/"(view:"/index")
"500"(view:'/error')
应用程序在 Tomcat6 中的 myapp 上下文中成功部署(分解)(我在根目录中有一个静态 html,可以成功显示)。
apache-tomcat-6.0.28\webapps\myproject 的内容(如果重要)包含在下面。我去掉了不必要的东西。控制器类已部署,与 UrlMappings 类相同。
对以下变体的所有 HTTP 请求
http://localhost:8080/myproject/test/list
http://localhost:8080/myproject/test/list/
http://localhost:8080/myproject/test/
http://localhost:8080/myproject/test
返回 404。要么是一个奇怪的错误,要么更可能是一个我不知道的简单错误。
感谢您的帮助。谢谢!
| index.html
| mysql-connector-java-5.1.13-bin.jar
|
\---WEB-INF
| applicationContext.xml
| sitemesh.xml
|
+---classes
| | BootStrap$_closure1.class
| | BootStrap$_closure2.class
| | BootStrap.class
| | Config$_run_closure1.class
| | Config$_run_closure1_closure3.class
| | Config$_run_closure1_closure4.class
| | Config$_run_closure1_closure5.class
| | Config$_run_closure2.class
| | Config.class
| | resources$_run_closure1.class
| | resources.class
| | UrlMappings$__clinit__closure1.class
| | UrlMappings$__clinit__closure1_closure2.class
| | UrlMappings.class
| |
| +---com
| | \---myproject
| | TestController$_closure1.class
| | TestController$_closure2.class
| | TestController$_closure3.class
| | TestController.class
| |
| \---org
| \---grails
| \---tomcat
| ParentDelegatingClassLoader.class
| SearchFirstURLClassLoader.class
| TomcatLoader.class
| TomcatServer$_preStart_closure3.class
| TomcatServer$_preStart_closure3_closure5.class
| TomcatServer$_start_closure1.class
| TomcatServer$_start_closure1_closure4.class
| TomcatServer$_start_closure2.class
| TomcatServer.class
| TomcatServerFactory.class
|
+---lib
| catalina-ant.jar
| grails-tomcat-plugin-1.0.jar
| jasper-jdt.jar
| mysql-connector-java-5.1.13-bin.jar
| tomcat-dbcp.jar
| tomcat-jasper.jar
| tomcat-juli-adapters.jar
| tomcat-juli.jar
|
\---tld
grails.tld
spring.tld
【问题讨论】:
【参考方案1】:它返回 404 错误,因为没有与任何操作关联的视图。
应用程序没有要呈现的内容...
更改您的控制器代码
class TestController
def index =
def list =
render("params = " + params);
def save =
render("params = " + params);
你会看到一些输出
【讨论】:
以上是关于REST URL 映射不起作用(Grails 1.3.3、Tomcat6)的主要内容,如果未能解决你的问题,请参考以下文章
自定义操作的 Django Rest Framework URL 不起作用
Grails:在控制器中设置啥以达到 URL 映射中的错误处理?
Angular 2 + NodeJS + Mongoose - 从 Angular 2 发布数据到 rest api nodejs 后端。节点 api 日志:选项 /url,POST 标头不起作用