zoukankan      html  css  js  c++  java
  • SprimgMVC学习笔记(九)—— RESTful支持

    一、什么是restful?

      Restful就是一个资源定位及资源操作的风格,其核心是面向资源。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。REST提出设计概念和准则为:

        1. 网络上的所有事物都可以被抽象为资源(resource)
        2. 每一个资源都有唯一的资源标识(resource identifier),对资源的操作不会改变这些标识
        3. 所有的操作都是无状态的

      REST简化开发,其架构遵循CRUD原则,该原则告诉我们对于资源(包括网络资源)只需要四种行为:创建(Create),获取(Retrieve),更新(Update)和删除(Delete)就可以完成相关的操作和处理。我们可以通过统一资源标识符(Universal Resource Identifier,URI)来识别和定位资源,并且针对这些资源而执行的操作是通过 HTTP 规范定义的。其支持的四种核心操作分别为:

    • GET – 获取信息/请求信息内容。绝大多数浏览器获取信息时使用该方式。
    • POST – 添加信息内容。显示曾经的信息内容,能够看作是insert操作
    • PUT – 更新信息内容。相当与update
    • DELETE – 删除信息内容能够看作是delete

      传统方式操作资源:

      • http://127.0.0.1/item/queryItem.action?id=1      查询,GET

      • http://127.0.0.1/item/saveItem.action                 新增,POST

      • http://127.0.0.1/item/updateItem.action             更新,POST

      • http://127.0.0.1/item/deleteItem.action?id=1      删除,GET或POST

      使用RESTful操作资源:

      • http://127.0.0.1/item/1          查询,GET

      • http://127.0.0.1/item              新增,POST

      • http://127.0.0.1/item              更新,PUT

      • http://127.0.0.1/item/1          删除,DELETE

    二、RESTful入门案例

    2.1 需求

      使用RESTful方式实现商品信息查询,返回json数据

    2.2 从URL上获取参数

      使用RESTful风格开发的接口,根据id查询商品,接口地址是:http://127.0.0.1/item/1

      我们需要从url上获取商品id,步骤如下:

    1. 使用注解@RequestMapping("item/{id}")声明请求的url

      {xxx}叫做占位符,请求的URL可以是“item/1”或“item/2” 
    2. 使用(@PathVariable() Integer id)获取url上的数据
      /**
       * 使用RESTful风格开发接口,实现根据id查询商品
       * 
       * @param id
       * @return
       */
      @RequestMapping("item/{id}")
      @ResponseBody
      public Item queryItemById(@PathVariable() Integer id) {
          Item item = this.itemService.queryItemById(id);
          return item;
      }

      如果@RequestMapping中表示为"item/{id}",id和形参名称一致,@PathVariable不用指定名称。如果不一致,例如"item/{ItemId}"则需要指定名称@PathVariable("itemId")。

      注意两个区别

    •  @PathVariable是获取url上数据的。@RequestParam获取请求参数的(包括post表单提交)

    •  如果加上@ResponseBody注解,就不会走视图解析器,不会返回页面,而是返回json数据。如果不加,就走视图解析器,返回页面

  • 相关阅读:
    Apache 安装及常用参数设置
    Apache 开启压缩传输
    在 CentOS 上编写 init.d service script [转]
    学习资源
    IO流(10)复制多级文件夹
    IO流(9)复制指定文件夹下指定文件到目的文件夹,并改名
    IO流(8)递归删除带文件的目录
    IO流(7)获取指定文件夹下的所有文件
    IO流(6)获取功能
    IO流(5)判断功能
  • 原文地址:https://www.cnblogs.com/yft-javaNotes/p/10216539.html
Copyright © 2011-2022 走看看