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 ...
随机推荐
- 编译你的第一个Java虚拟机--Centos 7 编译openJdk1.7源码
一.前言 最近在看<深入java虚拟机>,看完后,打算自己实际编译一个jvm出来看看,实践一下. 书上提到了Oracle JDK和OpenJdk的关系,Oracle Jdk7 和OpenJ ...
- 【CF587F】Duff is Mad AC自动机+分块
[CF587F]Duff is Mad 题意:给出n个串$s_1,s_2..s_n$,有q组询问,每次给出l,r,k,问你编号在[l,r]中的所有串在$s_k$中出现了多少次. $\sum|s_i|, ...
- 2. Mysql数据库的入门知识
2. Mysql数据库的入门知识 (1)打开Windows系统提供的服务查看相应的服务. (2)在Windows任务管理器的进程中查看 (3)使用命令行管理windows的Mysql数据库服务. Ne ...
- python3之文件操作
一 打开文件 根目录在d盘的文件名为‘学习资料.txt’的文件 a)绝对路径(最开始的,根目录文件)例: e:\学习资料.txt 相对路径 直接用文件名字 b)操作方式 只读 只 ...
- E - 487--3279
Businesses like to have memorable telephone numbers. One way to make a telephone number memorable is ...
- python 中面向对象的概念
原文 域和作用空间 本地域,函数域(nonlocal)和 全局域(global) def scope_test(): def do_local(): spam = "local spam&q ...
- python数据类型之pandas—DataFrame
DataFrame定义: DataFrame是pandas的两个主要数据结构之一,另一个是Series —一个表格型的数据结构 —含有一组有序的列 —大致可看成共享同一个index的Series集合 ...
- span 英文数字保持一行,中文自动换行
html 中 span 换行规则如下: span不换行默认只针对英文有效 如果想对中文设置有效需要添加样式 style="white-space:nowrap;" 默认的情况是这样 ...
- cobbler搭建本地的yum仓库源
cobbler自动化安装参考文档 https://www.cnblogs.com/minseo/p/8537266.html 使用cobbler可以快速搭建一个本地的yum仓库 cobbler rep ...
- 读《Spring源码深度解析》途中问题1
step 1:检查自己的eclipse版本:在help->About Eclipse中查看: step 2:进入 https://github.com/groovy/groovy-eclipse ...