004-restful应用构建、分布式会话、测试工具简介
一、概述
什么是rest(表述性状态转移,Representational State Transfer)是一种架构风格。他定义了创建可扩展Web服务的最佳实践。
1、Richardson成熟度模型
第0级:http,使用http协议
第1级:资源,资源会与一个统一资源标识符URL进行关联,URL是一个资源。如 /users 所有用户。/user/42指定用户。 /user/42/tweets 指定用户下的指定列表
第2级:HTTP动作,get【读取】,head【读取,不包含响应体】,delete【删除】,put【更新或创建】,post【更新或创建】,patch【部分更新】,options【返回服务端针对特性资源所支持方法列表】
第3级:超媒体控制,通过使用超文本链接,可以进行服务的发现。实际上就是服务器端通过响应头或响应体,告诉客户端其可选的功能。
2、API版本化
避免变更应用时,带来破坏性变更
如:http://example/api/v3,更多参看
3、使用有用的HTTP代码
需要使用有效的HTTP编码,更多参看
4、调试工具
postman,Restlet等
5、自定义输出注解
@JsonIgnoreProperties:类级别忽略一组属性
@JsonIgnore:属性级别忽略一个
6、使用带有状态码的类ResponseEntity
可以通过ResponseEntity设置http相应内容、状态、头信息以及相应体内容
如果需要使用ResponseEntity,必须在请求点返回,通常在spring rest中实现。ResponseEntity是通用类型,因此可以使用任意类型作为响应体。
7、使用异常来处理状态码
在类级别使用@ExceptionHandler,处理指定异常
使用@ControllerAdvice,捕获所有控制器或控制器的一个子集所抛出的全局异常
二、分布式会话
1、分布式会话几种方案:
粘性会话(sticky session),它能够确保特定用户会被转移到同一台服务器,并保持其会话。需要部署时额外配置,不是特别优雅。
中央数据库,将数据保存至数据库中,而不是保存在会话中。需要将其客户端请求中的cokkie或token相关联。每次从数据库中加载数据
使用spring session项目,能够透明的使用相Redis这样的分布式数据库作为底层的会话session 。
三、测试工具简介
1、单元测试
Junit:Java测试运行器,在所有的构建工具中都会自动启动
AssertJ:断言库
Mockito:易于使用的Mock框架
DbUnit:通过XML数据集来Mock和断言数据库内容
spock:一个优雅的Groovy DSL,可以使用行为驱动开发(Behaviour Driven Develpoment,BDD)的风格(Given、When、Then)编写测试
2、验收测试
Selenium2:通过WebDriver探测浏览器,从而进行自动化测试
PhantomJS:无界面的浏览器,
FluentLenium:用于执行Selenium测试的一个API库
Geb:用于执行Selenium测试的一个Groovy库
示例:https://www.cnblogs.com/bjlhx/p/8727290.html
004-restful应用构建、分布式会话、测试工具简介的更多相关文章
- .net分布式压力测试工具(Beetle.DT)
肯定有人会问为什么会写这样一个开源工具?和现有的有什么差别?不过对于一个程序员来说写东西还真不需要理由的:),主要原因是工作有点闲(开玩笑),不过说实话一个程员怎可能会停止写代码呢(作为一个奔4的程序 ...
- Locust分布式负载测试工具入门
忽略元数据末尾 回到原数据开始处 Locust简介 Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试. 以下是github上的仓库地址 https://github.co ...
- sysbench压力测试工具简介和使用(一)
sysbench压力测试工具安装和参数介绍 一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据 ...
- 【转帖】sysbench压力测试工具简介
sysbench压力测试工具简介 https://www.cnblogs.com/pdlife/p/6698957.html 一.sysbench压力测试工具简介: sysbench是一个开源的.模块 ...
- sysbench压力测试工具简介
一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL. ...
- AWS EC2+Docker+JMeter构建分布式负载测试基础架构
目录 概述及范围 前提条件 Part 1: Local setup-本地配置 Part 2: Cloud端基础架构--Infrastructure 总结: 原文链接 @ 概述及范围 本文介绍有关如何使 ...
- sysbench压力测试工具简介和使用(二)
sysbench压力测试工具使用: 2.1 测试数据库服务器的硬件配置信息如下: CPU: 24核心线程数,Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00G ...
- 常见Android测试工具简介
在进行android设备测试过程中,在进行系统测试时候,往往需要关注到很多方面,导致一个崩溃或者运行一段时间自动重启或者停止的问题很多.最简单来看,影响因素就有:底层硬件设备.OS层.上层app层.另 ...
- Python 黑客 004 用Python构建一个SSH僵尸网络 01 简介
用Python构建一个SSH僵尸网络 01 简介 一. 构建一个SSH僵尸网络的流程图: Created with Raphaël 2.1.0手动操作,实现通过SSH连接目标服务器(手动)用 Pexp ...
随机推荐
- [Unity3D] 05 - Access to DB or AWS
可以选择连接本地服务器,或者云服务器. 参考源代码 : https://www.cnblogs.com/wuzhang/p/wuzhang20141202.html (1) 功能:点击一下按键,然后访 ...
- 11代理模式Proxy
一.什么是代理模式 Proxy模式又叫做代理模式,是构造型的设计 模式之一,它可以为其他对象提供一种代理(Proxy)以 控制对这个对象的访问. 所谓代理,是指具有与代理元(被代理的对象)具有 相同的 ...
- MySQL 无法连接
Host 'localhost' is not allowed to connect to this MySQL server 错误 解决办法: C:\Program Files\MySQL\MySQ ...
- c# 日期函数DateTime.ToString()日期的各种格式 (本人亲测)
c# 日期函数DateTime.ToString()日期的各种格式 (本人亲测) 平时写代码的过程难免遇到对日期的格式转换,这个时候很容易忘记具体格式的转换是什么,当然这不是什么复杂的,查一下就能找 ...
- vba 如何去掉返回结果两端的双引号?
If Left(s, 1) = Chr(34) And Right(s, 1) = Chr(34) Then s = Mid(s, 2, Len(s) - 2) End If
- Spring MVC Redis 整合笔记
extends:http://blog.csdn.net/defonds/article/details/48716161, http://blog.csdn.net/java2000_wl/arti ...
- js 去除金额的千位分隔符
export function delcommafy(num) { if (num != undefined) { num = num.toString(); num = num.replace(/[ ...
- 更换title上的ico
var rurl = "/static/dashboard/img/favicon.ico"; var a = ''; var links = document.getElemen ...
- Bootstrap框架 inconfont font-awesome
Bootstrap框架和inconfont.font-awesome使用 iconfont的使用:https://www.cnblogs.com/clschao/articles/10387580.h ...
- hdfs 操作 入门api
获取分布式文件系统 // 获取文件系统 @Test public void getFileSystem() throws Exception{ Configuration configuration ...