使用stub进行快速迭代开发

标签: stub 迭代 开发 | 发表时间:2015-07-09 09:14 | 作者:
出处:http://www.iteye.com

现在趋向于前台和后台分层开发

前端调用后台接口获取数据,然后在页面展示.

但是有时候前台(静态资源)和后台联调时很麻烦:

(1)后台依赖协作方,里面的内容很难遍历各种情况;

(2)后台的数据修改起来很麻烦,因为我们没法直接修改数据库,因为数据库在协作方那里.

 

所以我想到了一个解决方法: stub

先看下我是如何操作的.

我使用 JMeter进行接口测试

 执行结果如下:

 

但是,你们知道返回的数据来自哪里吗?

来自于如下文件:

 orderContent.json的内容就是返回结果:

 

所以你想要返回什么内容,就可以直接修改对应的.json 文件.

 

规范:

比如你访问路径:/tv_mobile/stub/appstore/orderContent

那么stub目录下面一定有一个文件夹叫appstore,appstore 下面一定有一个文件orderContent.json

再比如你访问路径:/tv_mobile/stub/orgList

那么stub目录下面一定有一个文件叫orgList.json

 

项目使用spring MVC 框架

核心控制器:

package com.web.controller.comm;

import java.io.FileInputStream;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.common.util.SystemHWUtil;
import com.common.util.WebServletUtil;
import com.io.hw.file.util.FileUtils;
import com.util.JSONPUtil;

/***
 * 用于stub
 * 
 * @author huangweii 2015年5月29日
 */
@Controller
@RequestMapping("/stub")
public class StubController {
	protected Logger logger = Logger.getLogger(this.getClass());
	public static final String stub_folder = "stub/";
	public static final String stub_file_Suffix = ".json";

	/***
	 * 
	 * @param request
	 * @param action
	 * @param callback
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/{action}", produces = SystemHWUtil.RESPONSE_CONTENTTYPE_JSON_UTF)
	public String corsJsonSimple(HttpServletRequest request,
			@PathVariable String action, String callback) {
		String content = null;
		content = stub(request, stub_folder + action + stub_file_Suffix);
		return JSONPUtil.getJsonP(content, callback);
	}

	/***
	 * 
	 * @param request
	 * @param namespace
	 * @param action
	 * @param callback
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "/{namespace}/{action}", produces = SystemHWUtil.RESPONSE_CONTENTTYPE_JSON_UTF)
	public String corsJsonSimple(HttpServletRequest request,
			@PathVariable String namespace, @PathVariable String action,
			String callback) {
		String content = null;
		content = stub(request, stub_folder + namespace + "/" + action
				+ stub_file_Suffix);
		return JSONPUtil.getJsonP(content, callback);
	}
	private String stub(HttpServletRequest request, String path) {
		return stub(request, path, SystemHWUtil.CURR_ENCODING);
	}
	/***
	 * 读取文件
	 * @param request
	 * @param path
	 * @param charset
	 * @return
	 */
	private String stub(HttpServletRequest request, String path,String charset) {
		String content = null;
		try {
			String realPath2 = WebServletUtil.getRealPath(request, path);
			java.io.InputStream input = new FileInputStream(realPath2);
			content = FileUtils.getFullContent2(input,charset);
		} catch (java.io.FileNotFoundException ex) {
			ex.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return content;
	}

}

 

核心方法:

/**
	 * 获取相对地址的绝对地址
	 * 
	 * @param request
	 * @param relativePath
	 * @return
	 */
	public static String getRealPath(HttpServletRequest request, String relativePath) {
		return request.getSession().getServletContext().getRealPath(relativePath);
	}

 

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [stub 迭代 开发] 推荐:

使用stub进行快速迭代开发

- - ITeye博客
现在趋向于前台和后台分层开发. 前端调用后台接口获取数据,然后在页面展示.. 但是有时候前台(静态资源)和后台联调时很麻烦:. (1)后台依赖协作方,里面的内容很难遍历各种情况;. (2)后台的数据修改起来很麻烦,因为我们没法直接修改数据库,因为数据库在协作方那里.. 所以我想到了一个解决方法: stub.

迭代式开发技术

- - CSDN博客研发管理推荐文章
    迭代是一开发种技术,用来把系统功能传递到一系列的增量的完整版本,每个版本一个特定固定的时间段被开发,该时间段称之为迭代. 图中颜色代表每次开发每项活动所占的比重不同. 1、在进行大规模的投资前,就解决了关键的风险问题. 2、使的早期用户反馈在初始迭代中就能出现. 4、各个目标里程碑提供了短期的焦点.

敏捷开发-快速迭代

- - CSDN博客研发管理推荐文章
今天跟大家分享的是“敏捷开发、快速迭代”. 我们大都采用的是“瀑布开发模式”,有了问题,就得返工,虽然最终的产品会比较齐全完善,但是开发周期太长,开发人员会产生排斥,甚至厌恶的心理. 经过YH系统的开发,也且生体会到了这一弊端. 借鉴敏捷开发模式,来改善软件开发过程,提高项目的开发效率. 要想借鉴,首先得弄懂以下3个问题.

浅谈敏捷开发和迭代开发相结合

- - 研发管理 - ITeye博客
在这七年中,我做过很多的软件开发项目,经历了许多不同的项目组,在不同的项目中从事不同的角色,每个项目组根据项目类型的不同都有各自一套软件开发体系. 最近两年,本人主要从事软件开发的管理工作. 在工作中,不断的摸索与实践,并不断的学习和总结. 下面我将谈到的是:软件开发,将敏捷开发和迭代开发相结合的好处.

论迭代式的产品开发方法

- david - 所有文章 - UCD大社区
对基础构思的完善和原型化. 一款游戏从创意到开发,抽象来看可以分为两大阶段:基础构思的阶段,和迭代开发的阶段. 任何游戏在最早的时候都只是一个或者一组零散而不确定的构想,策划人员将这组构想加以整理,抽取其中相互联系的规则组成核心规则集,这就是产品最初的框架. 譬如说俄罗斯方块最初的规则可能包括:方块连成一行就消除并加分;头顶随机掉落新的方块;方块可旋转,等.

C++11(及现代C++风格)和快速迭代式开发

- - 刘未鹏 | Mind Hacks
过去的一年我在微软亚洲研究院做输入法,我们的产品叫“英库拼音输入法” ( 下载Beta版),如果你用过“ 英库词典”(现已更名为必应词典),应该知道“英库”这个名字(实际上我们的核心开发团队也有很大一部分来源于英库团队的老成员). 整个项目是微软亚洲研究院的自然语言处理组、互联网搜索与挖掘组和我们创新工程中心,以及微软中国Office商务软件部(MODC)多组合作的结果.

快速迭代式开发使用方法总结

- - CSDN博客互联网推荐文章
        为什么我在这里主要讨论迭代式软件开发. 本文在此抛开千篇一律的理论,拟就根据多年的实践,总结出一套比较务实、可操作性强的方法,以期望在有限的资源下确保软件质量得到较大保证. 一家之见,纰漏之处还请大家多多指正. 迭代式软件开发模式简要流程如下:.         上图绿色大框内,我们就称之为一个迭代周期.

腾讯敏捷开发及快速迭代

- - 标点符
从2006年开始,腾讯的研发规模开始膨胀,开发模式急需规范和标准化,到底走IPD(集成产品开发)还是Agile(敏捷)的开发路线,公司管理层也在为拿不定主意而犯愁,之后研发管理部开始与ThoughtWorks公司接触,逐渐将敏捷产品开发引入进来,并正式命名为TAPD(Tencent Agile Product Development).

二叉树迭代器算法

- - 酷壳 - CoolShell.cn
二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用. 但是,仅有遍历算法是不够的,在许多应用中,我们还需要对遍历本身进行抽象. 假如有一个求和的函数sum,我们希望它能应用于链表,数组,二叉树等等不同的数据结构. 这时,我们可以抽象出迭代器(Iterator)的概念,通过 迭代器把算法和数据结构解耦了,使得通用算法能应用于不同类型的数据结构.

Android 实现APP的版本迭代

- - 神刀安全网
在APP开发中,应用上线后公司肯定后期会对应用进行维护对一些Bug修复,这种情况就需要版本迭代了. 检测到服务器版本比本地手机版本高的时候,手机会询问用户是否要下载最新的app,然后下载apk下来,然后进行安装. 也可以用第三方服务,比如腾讯的Bugly、Bmob云服务等,也挺方便的,不过apk要上传到第三方的平台上,如果公司要求在自己平台上,就只能自己写了.