REST 的支持
Nov 15, 2017 758 PM
作者:zozoh
为什么要支持 REST
这个特性被喊了好几个版本了,并且先后被报了好几个 Issue:
注意, Nutz支持的是Restful风格的映射, 但并非一个Restful实现.
如何使用 REST
Nutz.Mvc 对于 REST 的支持,包括4个常用方法及通用定义方法:
- GET
- POST
- PUT
- DELETE
- @At(methods="xxx,yyy,zzz")
比如,你有一个 User 对象,你想为其增加 "修改" 和 "删除" 的操作,在模块类里你可以定义如下两个方法
@At("/user/?")
@GET
public User getUser(int userId){
// TODO 这里是实现代码
}
@At("/user/?")
@POST
public User updateUser(int userId, @Param("..") User user){
// TODO 这里是实现代码
}
@At("/user/?")
@DELETE
public void deleteUser(int userId){
// TODO 这里是实现代码
}
// 任意自选方法
@At(value="/user/?", method="fuck")
public void fuckUser(int userId){
// TODO 这里是实现代码
}
看,很简单,不是吗?你可以为你的请求设置路径参数,也可以为你的请求声明一个特殊的 HTTP 方法。路径参数的形式可以是:
- /user/?/topic/?
- /user/?/topic/*
- /*
关于 "路径参数" 的具体的解释,请参看 适配器
在一个入口函数上,你可以标注一个或多个下面的注解:
@GET
@POST
@PUT
@DELETE
这几个注解描述了当前入口函数仅仅相应什么样的 HTTP 请求方法。在你的应用运行时,即使 Nut.Mvc 匹配上了 URL,如果 HTTP 请求的方法和你声明的不符,它也当这个入口函数不存在。
如果你不声明这四个注解中的任何一个,则表示你希望你的这个入口函数处理发送到这个 URL 的任何HTTP 请求。
因此,你可以为一个入口函数声明 (@GET|@POST|@PUT|@DELETE) 中的一个或多个,处理其中一种或者多种HTTP 请求,而另外一个入口函数不声明注解,用来处理余下的其他 HTTP 请求方法。当然,这两个入口函数的 @At 应该是一致的。
@since 1.r.63,标注了上述4个注解的方法,可以省略@At,此时,相当于标注了一个默认的@At
本页面的文字允许在知识共享 署名-相同方式共享 3.0协议和GNU自由文档许可证下修改和再使用。