zoukankan      html  css  js  c++  java
  • 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

      

  • 相关阅读:
    html的输出&,空格,大小于号
    html如何修改hr水平直线的粗细
    LODOP指定window默认打印机和临时默认打印机
    微软面试题: 找出二叉树上任意两个结点的最近共同父结点。
    说说自己对hibernate一级、二级、查询、缓存的理解。
    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
    修改MySQL的默认密码的四种小方法
    java中Scanner的nextLine()和next()的区别
    JAVA中String字符串比较equals()和equalsIgnoreCase()的区别
    HashMap与HashTable的区别
  • 原文地址:https://www.cnblogs.com/bjlhx/p/10331217.html
Copyright © 2011-2022 走看看