原创

Post与Get方法初探以及Restful接口测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LS7011846/article/details/77769252

前言

       REST – REpresentational State Transfer首先,之所以晦涩是因为前面主语被去掉了,全称是 Resource Representational State Transfer。通俗来讲就是:资源在网络中以某种表现形式进行状态转移。分解开来:
       Resource:资源,即数据(前面说过网络的核心)。比如 newsfeed,friends等;
       Representational:某种表现形式,比如用JSON,XML,JPEG等;
       State Transfer:状态变化。通过HTTP动词实现。
Restful风格主要意思如下:
1. 每一个URI代表一种资源;
2. 客户端和服务器之间,传递这种资源的某种表现层;
3. 客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。

       具体的对应到我们web开发中,springmvc的表现层框架的注解开发即可完美的契合到restful风格。如下就是restful风格的注解。因为是get方法,前端通过访问/api/vms/id 这个url即可获得对应id的vminfo信息。/api/vms/123456,即返回到前端的是id为123456的的vminfo。

@Controller
@RequestMapping("/api/vms")
public class vmapi {
    @RequestMapping(value = "/{id}", method = RequestMethod.GET)
    public String getvm(){
    return vminfo;
}
}

如何测试Restful接口

       javaweb工作中有时候会有对后端Restful接口在对接前端之前的数据检测阶段,这时就需要对url形式的Restful进行测试。

post请求与get请求解析

       其中针对javaweb开发中后端通过http协议传递到前端数据的方式分为get,post,patch等。不同的方式数据传递也不一样,get方法的作用一般用来获取服务器端资源信息,如同查询数据库一样,不会影响到资源自身状态;而相对于get方法,post方法就提供了更强大的功能,除了能获取服务器资源以外,还能向服务器上传或是修改数据。虽然get方法也可以用来向服务器上传数据,但是一般不采用get方式,而是推荐使用post方法上传数据。因为采用get方式与服务器交互(上传数据)时,一般将数据添加至URL后面,即url后加“?”然后是变量名以及数据内容,多个变量之间使用“&”连接,如:https://11.1.1.111/api/vms/net/123?page=2&per_page=10。而post方法则是将数据通过http请求的附件形式隐式的进行传输。这样就凸显出了两个问题:
       1. get请求暴露出所有与服务器交互的数据内容,不安全。
       2. get请求使用url形式,url有长度限制。
       因此我们通常选用post请求向服务器上传和修改数据,而且一些需要加密的获取服务器资源的请求也需要通过post请求发出,那么post请求这么万能,我们为什么不都采用post请求呢?
       因为post请求和get请求所表达的语义不一样,主干网络可以对其做不同的处理,get请求所表达出来的语义是一种只读的纯粹的操作,仅仅是对服务器资源的一种读取操作(无副作用),不会改变服务器资源,因此大部分get请求都被CDN缓存了,这样就会减少真正的web服务器很大的压力;但post请求所表达出来的语义是有副作用的操作,所以所有的请求都会发送到web服务器处理。这样一来,若是将所有的get请求换成post请求,那就意味着cdn就完全没有任何存在的意义,web服务器处理的请求便会成倍的增加,因此post和get无法相互取代。
       CDN技术: CDN主要功能是在不同的地点缓存内容,通过负载均衡技术,将用户的请求定向到最合适的缓存服务器上去获取内容,比如说,是北京的用户,我们让他访问北京的节点,深圳的用户,我们让他访问深圳的节点。通过就近访问,加速用户对网站的访问。解决Internet网络拥堵状况,提高用户访问网络的响应速度。

测试接口

       get方式的接口直接通过url补全参数即可,如https://11.1.1.111/api/vms/net/123?page=2&per_page=10,参数对应注解中的同名参数,然后通过浏览器输入之后回车,即可看到服务器返回的数据,一般为json格式数据。
       post接口就需要工具测试了,因为通过http附件形式传递的数据内容,无法通过输入url直接模拟请求,需要浏览器的小插件。列举firefox浏览器的HttpRequester插件。一个springmvc注解方法如下:
       @RequestMapping(value = “/addVm”, method = RequestMethod.POST)
       public @ResponseBody String addVm(@RequestBody List vmHostlist, HttpServletRequest request)
       其中 @RequestBody List vmHostlist 就是前端需要向服务器端传递封装的数据,使用json字符串封装,list对象,在工具中的content中填充json字符串内容。然后选择发送的方式——post即可收到response返回结果。

正文到此结束
Loading...