• Spring MVC REST 风格的 URL


    前言

      本文主要内容为 REST 风格的 URL。

    REST

      REST(Representational State Transfer)。(资源)表现层状态转化。它是一种架构风格,用 url 来访问网络上的资源。

      ● 资源(Resources):网络上的一个实体,即网络上的一个具体的信息。比如 一段文本、一张图片等。可以用一个 URI 指向它,每个资源对象一个特定的 URI。

      ● 表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层

      ● 状态转化(State Transfer):客户端每发出一个请求,就代表客户端和服务器的一次交互。HTTP 协议是一个无状态协议,即所有的状态都保存在服务器。因此,如果客户端想要操作服务器,就必须通过某种手段,让服务器发生 状态转化。而这种转化是建立在表现层之上的,所以就是 表现层状态转化。具体讲就是:HTTP 协议里面四个表示操作的动作:GET、POST、DELETE、PUT,它们分别对应四种基本操作:GET用来获取资源、POST用来创建资源、DELETE用来删除资源、PUT用来更新资源

    使用 REST 风格的 URL

      上面的 状态转化 已经提到了需要通过某种手段让服务器发生状态转化。我们还是先看看怎么用,然后再去看看源码吧!

      1、配置一个过滤器 HiddenHttpMethodFilter

        (该过滤器是 Spring3.0 添加的)。见名知意:隐藏的Http请求方式过滤。

        

                            (web.xml 文件中配置 HiddenHttpMethodFilter 过滤器)

      2、写上几个请求处理方法(当然,你也可以先写好 jsp 页面)

        

                                (各处理请求的目标方法,处理不同请求)

       3、写上 jsp 页面

         

                        (jsp 页面)

     

      4、依次发起请求

                                     

            (jsp页面效果)                                (控制台输出)

      请求路径示例:

      小结:到这里,整个 REST 测试就结束了,当然,这只是一个简单的测试。从上面的请求路径可以看出: REST 风格的 URL 和之前的 URL 是有一定区别的。之前的 URL 无非就是  IP:port/项目名/delete?id=100  这样的格式。这两者很明显 REST 风格的更优雅,也更符合标准。

    相关源码查看

      首先看看我们配置的过滤器吧

        主要看看其中的两个属性和一个方法:

          

                              (两个重要属性)

        上图中的 _method 不陌生吧,在 jsp 页面中我们定义了一个隐藏的文本,表单的名字就是 _method。为什么要定义这个隐藏的文本域呢?看看下面这个方法:

          

                                (doFilterInternal() 方法)   

       上图提到了包装请求,为什么可以包装呢?

       

                              (包装类)

     好了,以上就是 REST 风格 URL 的基本使用 和 相关源码的查看的。关于 REST 风格的具体用法我会在后面的 关于一个 CRUD 的例子中说明。

    PS: 文本存在诸多不足之处,望指出。谢谢!

  • 相关阅读:
    一篇文章教会你利用Python网络爬虫实现豆瓣电影采集
    一篇文章教会你利用Python网络爬虫获取穷游攻略
    一篇文章教会你使用html+css3制作GIF图
    一篇文章教会你使用html+css3制作炫酷效果
    一篇文章教会你利用Python网络爬虫获取素材图片
    Spring 获取Bean ApplicationContextAware的使用
    数据库系统概论(第五版) 王珊 第三章课后习题答案
    【每日一题】27. 过河 (DP + 离散化)
    判断客户端是PC还是移动端问题的解决方案
    Mynavi Programming Contest 2021(AtCoder Beginner Contest 201)A ~ E题题解
  • 原文地址:https://www.cnblogs.com/dream-saddle/p/9349224.html
Copyright © 2020-2023  润新知