我正在将一个正在运行的Web应用程序从Grails 2.3移植到3.0.1。当我将Json字符串{"命令":" ping"}发布到服务器时,我得到以下结果:
{"timestamp":1429380750958,"status":405,"error":"Method Not Allowed","exception":"org.springframework.web.HttpRequestMethodNotSupportedException","message":"Request method 'POST' not supported","path":"/rps/request"}
这是控制器:
import org.grails.web.json.JSONObject
class RequestController {
def jsonManagerService
def index() {
JSONObject json = request.JSON
if(!json){
render "{json or gtfo}"
return
}
render jsonManagerService.parseJson(json)
}
}
这里是JsonManagerService:
import grails.transaction.Transactional
import org.grails.web.json.JSONObject
@Transactional
class JsonManagerService {
def parseJson(JSONObject o) {
switch (o.command){
case("ping"):
return '{"result":"pong"}'
break;
default:
return '{"result":"unknown command"}'
}
}
}
这是我的UrlMappings.groovy(它是默认的):
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?(.$format)?"{
constraints {
// apply constraints here
}
}
"/"(view:"/index")
"500"(view:'/error')
"404"(view:'/notFound')
}
}
它看起来像Spring相关的问题。所有关于此事的搜索均未提供任何结果。有什么想法吗?
编辑:感谢@dmahapatro,添加了UrlMappingsgroovy。纠正了控制器,哑巴错误,但结果仍然相同。