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 ...
随机推荐
- jmeter中split分隔字符
jmeter中自带了split函数,但是,注意但是,不能使用"-",","等等符合,否则会报错. 没办法,转投入beanshell的怀抱,使用split,发现& ...
- vue使用render渲染&jsx
vue&jsx文档 vue实例属性 // App.ts import hBtn from './components/hBtn' import hUl from './components/h ...
- Nand: OOB BBT ECC PEB LEB
OBB: 例如Samsung K9F1208U0B,数据存储容量为64MB,采用块页式存储管理.8个I/O 引脚充当数据.地址.命令的复用端口.芯片内部存储布局及存储操作特点: 一片Nand flas ...
- MySQL主从同步添加至zabbix监控
参考文档:https://blog.csdn.net/hellowidow_2020/article/details/78985368 https://www.cnblogs.com/cdjia ...
- CentOS 7.4下使用yum安装MySQL5.7.20 最简单的 (引用)
引用 https://blog.csdn.net/z13615480737/article/details/78906598 CentOS7默认数据库是mariadb, 但是 好多用的都是mysql ...
- 蚂蚁金服研发的金融级分布式中间件SOFA背后的故事
导读:GIAC大会期间,蚂蚁金服杨冰,黄挺等讲师面向华南技术社区做了<数字金融时代的云原生架构转型路径>和<从传统服务化走向Service Mesh>等演讲,就此机会,高可用架 ...
- .NET Core开发日志——Model Binding
ASP.NET Core MVC中所提供的Model Binding功能简单但实用,其主要目的是将请求中包含的数据映射到action的方法参数中.这样就避免了开发者像在Web Forms时代那样需要从 ...
- [No0000130]WPF 4.5使用标记扩展订阅事件
自从我上次写到关于标记扩展的时候已经有一段时间了...... Visual Studio 11 Developer Preview的发布给WPF带来了一些新功能,让我有理由再次使用它们.我要在这里讨论 ...
- Angular4 Ng 模块
原文地址 http://www.jianshu.com/p/317f0e4b7284 根模块 (root module) 每个应用都至少有一个根模块用来引导并运行应用.根模块通常命名为 AppModu ...
- MyBatis时间比较
<if test="submitTime!=null and submitTime!=''"> AND DATE_FORMAT(sc.submit_time, '%Y- ...