有没有办法重新配置Grails 3链接生成器以创建Restful链接,即localhost:8080/book/{id}
而不是包含URL中的操作的旧样式localhost:8080/book/show/{id}
?
我希望在回复的位置标题中包含用于保存操作的宁静网址。
答案 0 :(得分:0)
我一直在使用此Grails Restful Link Generator作为解决方法。我对此并不十分满意,但这是迄今为止我能够提出的最好的。
<强> 1。在src/main/groovy
中创建一个特征,从网址中删除多余的操作
import grails.web.mapping.LinkGenerator
trait RestfulLinkGeneratorTrait {
LinkGenerator grailsLinkGenerator
String generateLink(Map map) {
map.controller = map.controller ?: this.controllerName
map.absolute = map.absolute ?: true
map.action = map.action ?: "show"
grailsLinkGenerator.link(map).replace("/$map.action", "")
}
}
<强> 2。在您的控制器上实施RestfulLinkGenerator
并致电generateLink(id: obj.id)
以生成链接。
@Secured('ROLE_USER')
class BookController extends RestfulController implements RestfulLinkGeneratorTrait {
//... other methods ...//
@Transactional
def save() {
// ... save you resource ... //
response.addHeader(HttpHeaders.LOCATION, generateLink(id: book.id))
respond book, [status: CREATED, view: 'show']
}
//... other methods ...//
}