美文网首页
一个例子了解RestFul

一个例子了解RestFul

作者: MasterXiao | 来源:发表于2018-01-30 15:42 被阅读53次

    首先我们要知道什么是RestFul:

        简单来说Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

        首先我们来看一看restFul风格和传统风格操作资源的差别

        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风格要简洁很多

    其实现在很多大厂都是使用的这种风格。比如京东:

    接下来我们就来了解下restful的来龙去脉吧

    Step1

    我们每天都要吃早餐

    今天早上8点30我们到了一加早餐店对服务员说来一碗津市牛肉粉,然后找了个位置坐下来等粉来。

    这个点餐的过程我们如果用Json数据来描述就可以是下面这个样子的。

    {

        "addOrder"::{

            "orderName":"牛肉粉"

        }

    }

    我们通过这个Json数据表示我们需要添加一个订单,内容是牛肉粉,之后我们可以收到一个牌子上面写着17

    {      

      “orderId”:”17”

    }                

    之后我们就可以坐在位置上等服务员来送餐了。

    不过现在我们假设一下我们现在有一张会员卡,想查询一下会员卡还省多少钱,这个时候我们可以发送这一串Json   地址是  数据是

    {

        “getBalance”::{

            "carId"::"8088"

        }

    }

    查询卡号为你8088的余额,我们可以收到这样一串回传信息

    {

        "balance":0

    }

    没钱。 现在跟老板说,这个粉我不要了,

    {

    “deleteOrder”:{

        "orderId":"17"

    }

    }

    然后出门买了俩包子

    这样子的请求方式就相当于我们当初学习JSP和Servlet的单一资源的请求方式了。

    如果对于用户量大一些的场景肯定不适用

    Step2

    接下来我们来修改一下

    我们将订单作为一个模块 会员卡作为一个模块

    1.添加订单

    /order

    {

        "addOrder"::{

            "orderName"::"牛肉粉"

        }

    }

    2.删除订单

    /order

    {

           "deleteOrder":{

            "orderId":"17"

    }

    }

    3.查询余额

    /cards

    {

        "getBalance":{

            "cardId":"8088"

        }

    }

    Step3

    接下来老板还想继续优化,他发现负责处理订单的员工,每次都要去订单内容里面看是新增订单还是删除订单,还是其他的什么操作,十分不方便,于是规定,所有新增资源的请求,都在请求上面写上大大的‘POST’,表示这是一笔新增资源的请求” 删除订单 在请求上面写上一个"DELETE",表示这是一个删除订单的请求。获取资源则在请求上面写上“GET”表示这是一个获取资源的请求。

    现在,让我们来点一碗牛肉粉。

    POST/orders

    {

        "orderName":"牛肉粉"

    }

    现在请求就简单多了,不用告诉老板是addOrder  看到是Post请求就知道是新增了。

    接着是查询和删除

    GET/cards

    {

        "cardId":"8088"

    }

    还可以优化一下

    GET     /card/8088

    删除可以是这样

    DELETE   /orders/17

    接下来我们还是通过代码来看看如何实现一个Rest风格吧

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

    http://127.0.0.1/item/1            查询商品id为1的商品

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

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

    {xxx}叫做占位符,请求的URL可以是“item /1”或“item/2”

    使用(@PathVariable() Integer id)获取url上的数据 

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

    http://127.0.0.1/item/123?id=1

    注意两个区别

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

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

    相关文章

      网友评论

          本文标题:一个例子了解RestFul

          本文链接:https://www.haomeiwen.com/subject/dhkczxtx.html