美文网首页
一个例子了解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