zoukankan      html  css  js  c++  java
  • 如何使用REST请求风格

    REST:即 Representational State Transfer。(资源)表现层状态转化。是目前最流行的一种互联网软件架构。
    它结构清晰、符合标准、易于理解、扩展方便, 所以正得到越来越多网站的采用。
    HTTP 协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。
    它们分别对应四种基本操作:

    • GET 用来获取资源
    • POST 用来新建资源
    • PUT 用来更新资源
    • DELETE 用来删除资源

    示例:

    • /order/1 HTTP GET :得到 id = 1 的 order
    • /order/1 HTTP DELETE:删除 id = 1的 order
    • /order/1 HTTP PUT:更新id = 1的 order
    • /order HTTP POST:新增 order

    浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器HiddenHttpMethodFilter,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。
    POST请求如何转化为put请求和delele请求?
    1、在web.xml文件中配置:

     1 <!-- 配置springMVC -->
     2 <servlet>
     3     <servlet-name>SpringMVC</servlet-name>
     4     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     5     <!-- contextConfigLocation配置SpringMVC加载的配置文件(配置处理器映射器、适配器等等)-->
     6     <init-param>
     7         <param-name>contextConfigLocation</param-name>
     8         <param-value>classpath:springmvc.xml</param-value>
     9     </init-param>
    10     <load-on-startup>1</load-on-startup>
    11 </servlet>
    12 <servlet-mapping>
    13     <servlet-name>SpringMVC</servlet-name>
    14     <!-- 第一种:*.action,访问以.action结尾 由DispatcherServlet进行解析 
    15         第二种:/,所有访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析 
    16         使用此种方式可以实现 RESTful风格的URL 
    17         第三种:/*,这样配置不对,使用这种配置,最终要转发到一个JSP页面时, 仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错。 -->
    18     <url-pattern>/</url-pattern>
    19 </servlet-mapping>
    20 <!-- HiddenHttpMethodFilter过滤器可以将POST请求转化为put请求和delete请求! -->
    21 <filter>
    22   <filter-name>hiddenHttpMethodFilter</filter-name>
    23   <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    24 </filter>
    25 <filter-mapping>
    26   <filter-name>hiddenHttpMethodFilter</filter-name>
    27   <url-pattern>/*</url-pattern>
    28 </filter-mapping>

    2、在表单域中需要携带一个name值为_method,value值为put或者delete的参数,get和post方法正常使用,如下所示:

     1 <!-- REST-----GET -->
     2 <a href="${pageContext.request.contextPath }/order/1">提交get请求</a>
     3 <!-- REST-----POST -->
     4 <form action="${pageContext.request.contextPath }/order/1" method="post">
     5     <input type="submit" value="提交POST请求">
     6 </form>
     7 <!-- REST-----PUT -->
     8 <form action="${pageContext.request.contextPath }/order/1" method="post">
     9     <input type="hidden" name="_method" value="put">
    10     <input type="submit" value="提交put请求">
    11 </form>
    12 <!-- REST-----DELETE -->
    13 <form action="${pageContext.request.contextPath }/order/1" method="post">
    14     <input type="hidden" name="_method" value="delete">
    15     <input type="submit" value="提交delete请求">
    16 </form>

    3、在后台接收参数并作处理,

    @RequestMapping中的参数名称必须和@PathVariable中value的值相同。
     1 public static String SUCCESS="success";//WEB-INF下的success.jsp
     2 //REST请求方式-----GET获取
     3 @RequestMapping(value="/order/{id}",method=RequestMethod.GET)
     4 public String helloGet(@PathVariable(value="id") Integer id){
     5     System.out.println("GET-------"+id);
     6     return SUCCESS;
     7 }
     8 //REST请求方式-----POST添加
     9 @RequestMapping(value="/order/{id}",method=RequestMethod.POST)
    10 public String helloPost(@PathVariable(value="id") Integer id){
    11     System.out.println("POST-------"+id);
    12     return SUCCESS;
    13 }
    14 //REST请求方式-----PUT修改
    15 @RequestMapping(value="/order/{id}",method=RequestMethod.PUT)
    16 public String helloPut(@PathVariable(value="id") Integer id){
    17     System.out.println("PUT-------"+id);
    18     return SUCCESS;
    19 }
    20 //REST请求方式-----DELETE删除
    21 @RequestMapping(value="/order/{id}",method=RequestMethod.DELETE)
    22 public String helloDelete(@PathVariable(value="id") Integer id){
    23     System.out.println("DELETE-------"+id);
    24     return SUCCESS;
    25 }
  • 相关阅读:
    国内大学毕业论文LaTeX模板集合
    LATEX论文排版学习资源汇总
    论文神器Latex30分钟快速入门教程-只需9步向学神看齐
    smartdraw2013破解方法
    科研常用的软件
    推荐科研软件
    斯坦福大学科研软件
    【LaTeX】E喵的LaTeX新手入门教程(6)中文
    【LaTeX】E喵的LaTeX新手入门教程(5)参考文献、文档组织
    【LaTeX】E喵的LaTeX新手入门教程(4)图表
  • 原文地址:https://www.cnblogs.com/lixiang1993/p/7406242.html
Copyright © 2011-2022 走看看