一、概述

  什么是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应用构建、分布式会话、测试工具简介的更多相关文章

  1. .net分布式压力测试工具(Beetle.DT)

    肯定有人会问为什么会写这样一个开源工具?和现有的有什么差别?不过对于一个程序员来说写东西还真不需要理由的:),主要原因是工作有点闲(开玩笑),不过说实话一个程员怎可能会停止写代码呢(作为一个奔4的程序 ...

  2. Locust分布式负载测试工具入门

    忽略元数据末尾 回到原数据开始处 Locust简介 Locust是一个简单易用的分布式负载测试工具,主要用来对网站进行负载压力测试. 以下是github上的仓库地址 https://github.co ...

  3. sysbench压力测试工具简介和使用(一)

    sysbench压力测试工具安装和参数介绍 一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据 ...

  4. 【转帖】sysbench压力测试工具简介

    sysbench压力测试工具简介 https://www.cnblogs.com/pdlife/p/6698957.html 一.sysbench压力测试工具简介: sysbench是一个开源的.模块 ...

  5. sysbench压力测试工具简介

    一.sysbench压力测试工具简介: sysbench是一个开源的.模块化的.跨平台的多线程性能测试工具,可以用来进行CPU.内存.磁盘I/O.线程.数据库的性能测试.目前支持的数据库有MySQL. ...

  6. AWS EC2+Docker+JMeter构建分布式负载测试基础架构

    目录 概述及范围 前提条件 Part 1: Local setup-本地配置 Part 2: Cloud端基础架构--Infrastructure 总结: 原文链接 @ 概述及范围 本文介绍有关如何使 ...

  7. sysbench压力测试工具简介和使用(二)

    sysbench压力测试工具使用: 2.1    测试数据库服务器的硬件配置信息如下: CPU:      24核心线程数,Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00G ...

  8. 常见Android测试工具简介

    在进行android设备测试过程中,在进行系统测试时候,往往需要关注到很多方面,导致一个崩溃或者运行一段时间自动重启或者停止的问题很多.最简单来看,影响因素就有:底层硬件设备.OS层.上层app层.另 ...

  9. Python 黑客 004 用Python构建一个SSH僵尸网络 01 简介

    用Python构建一个SSH僵尸网络 01 简介 一. 构建一个SSH僵尸网络的流程图: Created with Raphaël 2.1.0手动操作,实现通过SSH连接目标服务器(手动)用 Pexp ...

随机推荐

  1. [Optimisation] Read & Write file on Hard Disk

    Ref: 探寻C++最快的读取文件的方案 方法/平台/时间(秒) Linux gcc Windows mingw Windows VC2008 scanf 2.010 3.704 3.425 cin ...

  2. 【laravel5.6】 laravel中间件内生成参数并且传递到控制器的2种方法

    中间件方法: /** * 自定义中间件: * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return ...

  3. css - 兼容适配坑点总结(。。。)

    1. transform为代表的这些css3属性一定要写-webkit-,不然低版本(目前遇到的是8)的苹果,不支持. 2. x的适配 /* x */ @media only screen and ( ...

  4. R和Tableau平行坐标图

    R平行坐标图 library(lattice)data(iris)parallelplot(  ~ iris[1:4],  iris,  groups = Species,  horizontal.a ...

  5. callback 模式

    回调,是一种机制,同时也是一种设计模式. 我们定义一个函数,让能够回调 import _products from './products.json' const TIMEOUT = 100 cons ...

  6. Python2安装igraph

    前言 igraph是一个进行图计算和社交网络分析的软件包,支持python语言,打算学习igraph,然后应用在自己的项目中. 系统环境 64位win10系统,同时安装了python3.6和pytho ...

  7. for循环 例子

    <script type="text/javascript"> //循环 for循环 //循环操作某一个功能(执行某段代码) //四要素 1.循环初始值 2.循环条件 ...

  8. Jexus 安装asp.net mvc EF 项目引发的错误总

    1.Linux 中的文件路径问题(配置文件路径),必须使用左斜杆 “/” 2.MVC 看 View/Web.config 下的配置文件中版本不对报错,如下: Could not locate Razo ...

  9. [dpdk] dpdk启动几个线程

    看别人的代码搞得有点晕,突然有点不确定,再确认一次. 使用 helloworld程序测试一下. /root/dpdk-16.07/examples/helloworld 一:  只启动一个核心. [r ...

  10. Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases

    INTRODUCTION   In modern distributed cloud services, resilience and scalability are increasingly ach ...