REST 的支持

Nov 15, 2017 7:41:58 PM

作者:zozoh

为什么要支持 REST

这个特性被喊了好几个版本了,并且先后被报了好几个 Issue:

  • Issue 323
  • Issue 369
    加上今天是个风和日丽的日子,Nutz.Mvc 重构完毕。架构这么灵活强大,那么我就把这个特性加上吧,呵呵。

注意, Nutz支持的是Restful风格的映射, 但并非一个Restful实现.

如何使用 REST

Nutz.Mvc 对于 REST 的支持,包括4个常用方法及通用定义方法:

  • GET
  • POST
  • PUT
  • DELETE
  • @At(methods="xxx,yyy,zzz")
    比如,你有一个 User 对象,你想为其增加 "修改" 和 "删除" 的操作,在模块类里你可以定义如下两个方法
  1. @At("/user/?")
  2. @GET
  3. public User getUser(int userId){
  4. // TODO 这里是实现代码
  5. }
  6. @At("/user/?")
  7. @POST
  8. public User updateUser(int userId, @Param("..") User user){
  9. // TODO 这里是实现代码
  10. }
  11. @At("/user/?")
  12. @DELETE
  13. public void deleteUser(int userId){
  14. // TODO 这里是实现代码
  15. }
  16. // 任意自选方法
  17. @At(value="/user/?", method="fuck")
  18. public void fuckUser(int userId){
  19. // TODO 这里是实现代码
  20. }

看,很简单,不是吗?你可以为你的请求设置路径参数,也可以为你的请求声明一个特殊的 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自由文档许可证下修改和再使用。

原文: http://nutzam.com/core/mvc/rest.html