Giter VIP home page Giter VIP logo

thx / rap Goto Github PK

View Code? Open in Web Editor NEW
10.6K 10.6K 2.5K 350.09 MB

Web接口管理工具,开源免费,接口自动化,MOCK数据自动生成,自动化测试,企业级管理。阿里妈妈MUX团队出品!阿里巴巴都在用!1000+公司的选择!RAP2已发布请移步至https://github.com/thx/rap2-delos

Home Page: http://rap2.taobao.org

License: GNU General Public License v3.0

HTML 0.10% JavaScript 86.93% CSS 2.25% Java 10.71% Shell 0.01% Dockerfile 0.01%

rap's People

Contributors

acoder2013 avatar belerweb avatar bosn avatar jokefaker avatar nunnly avatar nuysoft avatar undeadwing avatar wangjeaf avatar x03570227 avatar xinglie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rap's Issues

Bosn请假贴

2014年7月15日 ~ 本月底业务项目较重,不紧急的项目问题修复暂停2星期,技术支持永不停止。影响使用的严重问题依然支持。谢谢!

各种小BUG汇总

  • 数组在控制台中的输出不正确
  • 添加参数时的focus位置跑到最上面了(受自动排序功能的影响),修改为在最底部(靠近添加按钮)处添加。
  • 有时保存后TAB切换页面样式会乱

RAP/seajs前置引入产生问题

场景描述

国际站AE公共库使用了seajs并在业务代码执行前提前加载了jQuery,导致无法正常加载到RAP插件修改后的jQuery

使用seajs alias配置不会影响已经加载过的jQuery

删除cache中的jQuery条目后,业务的seajs.use依然不能重新访访问新的jQuery

临时解决方案

增加参数seajs=false来禁用seajs的默认封装
在业务代码中调用

window.wrapJQueryForRAP && wrapJQueryForRAP($);

完成手动封装

TODO

重现CASE,看看是否可以通过RAP插件内部解决该问题。

关于MockJS的规范约束

目前RAP在校验数据结构上,只能以结构的方式,也就校验的范围是:

  • 参数是否缺少/多余
  • 参数类型是否正确

为了进一步校验,对后端返回数据的规则进行限定,这一块儿搞出第二套规则不如直接使用MockJS的语法。比如限定数组返回必须是3-6组,则填写

{
    "list|3-6" : []
}

IF-TEST在实现自动化测试时不知道CASE是如何编写的?是否考虑过规范约束的实现是否需要引入什么方法论或工具?

RAP & IF-TEST合作打通,OPEN-API开发

该issue已过期

已经更新到文档,该issue已过期,请以:

http://thx.github.io/RAP/tutorials

中 9.开放API部分中的描述为准:)

API1:返回RAP项目的模型数据,到接口层级。

路径和请求参数

http://{domain}/queryModel.do?projectId={projectId}&ver={ver}

{projectId}为项目ID
{ver}为版本号,不传默认返回当前版本

响应数据结构

返回的对象有3个字段,分别是:
model - 细化到action层级的项目模型信息
code - 错误码,正确返回200
msg - 错误消息,正确返回空字符串

EXAMPLE

链接:http://rap.domain.com/api/querySchema.do?actionId=1460&type=request

{"model":{"moduleList":[{"id":518,"pageList":[{"id":738,"interfaceList":[{"id":2024,"desc":"","reqUrl":"a","name":"某请求","reqType":"1"},{"id":2025,"desc":"","reqUrl":"bbb","name":"bbb","reqType":"1"}],"name":"某页面","intro":""}],"name":"某模块(点击编辑后双击修改)","intro":""}],"id":429,"name":"临时项目一会儿删掉不要动","ver":"0.0.0.4","intro":""},"code":200,"msg":""}

API2:返回具体一个接口的JSON Schema接口详情

路径和请求参数

http://{domain}/querySchema.do?actionId={actionId}&ver={ver}&projectId={projectId}&type={type}

其中
{actionId}为接口的ID
{ver}{projectId}均为可选参数,同时出现表示指定某一版本的接口。
{type}值为request时表示返回请求参数的schema,其它值或不传默认返回响应参数的schema

响应数据结构

返回的对象有3个字段,分别是:
model - 细化到action层级的项目模型信息
code - 错误码,正确返回200
msg - 错误消息,正确返回空字符串

EXAMPLE

链接:http://rap.domain.com/api/querySchema.do?projectId=429&actionId=2024&ver=0.0.0.2

{"schema":{"id":2024,"$schema":"http://json-schema.org/draft-04/schema","properties":{"resParam":{"id":38393,"title":"某响应参数","description":"","format":"MOCKJS||","required":false,"type":"number"},"a":{"id":38392,"title":"","description":"","format":"MOCKJS||","required":false,"type":""}},"required":"false","type":"object"},"code":200,"msg":""}

RAP国际化

导入API Blueprint工具到RAP,全面支持Blueprint API规范。所有文档手册、应用提供英语支持。

进度

  • 可导入的Blueprint API工具调研
  • RAP数据 => Blueprint API转换器
  • 导入第一个Blueprint API工具 (Aglio)
  • 提供英文RAP (release_en分支)
  • Blueprint API => RAP数据转换器
  • 最后将RAP推送到Blueprint API官网实现互通
  • dredd - 后端自动化测试工具导入
  • 进一步提升转换器支持程度

RAP插件与Sea.js兼容问题

RAP插件在处理Sea.js时是通过修改Seajs的alias来使后面seajs.use引入期望的RAP插件包装过的jQuery.js。

如果因为客户业务需求导致RAP插件执行前,jQuery一定要预先加载,则该拦截方法失效。

咨询seajs的技术支持,目前没有很好的解决办法。

结合大家讨论,目前最好的方案是:

/demo/mock.plugin/casebox/case1_seajs_jquery_preload.html

采用拦截seajs.use方法,并做一次wrapJQueryForRAP调用即可解决。

RAP国际化

需求

为和Blueprint API对接,并结合开源社区的优势,RAP需要有国际化的版本。

跟踪

  • 英文版界面的分支,暂定release-en(暂时英汉两版够用鸟)
  • 英文介绍视频,上传至YouTube #postponed#
  • 英文文档中心
  • 英文README.md
  • 增加需求:提供unit-test外网用户部署所使用的UT的SQL脚本。最好能够内置化,用于UT的工程对外不可见。tb_project增加bit1类型的hidden字段。 #postponed#

Deadline

2014.09.30

修复路径写死的问题

修复路径写死的问题,对类似问题做复查,防止公司外或其它自行部署服务的用户使用自己的域名后无法正常工作。

各种Styles问题

  • pageTester高版本IE浏览器下控制台不能正常工作。
  • IE8 & 8- 浏览器没有给出兼容警告。
  • 在保存后有时切换TAB会出现样式问题
  • 只读模式下查看文档,会有间距小问题

[紧急]JSON导入数组支持数组数据录入。[ASAP]

目前RAP中使用JSON导入时,如果是数组,只导入第一组数据。
用户在导入一些逻辑数据时会发生丢失。

需求

导入数据后不做任何修改默认产出与导入一样的数据,且保持正确的文档结构。

跟踪

  • 实现MockJS的@order指令 @nuysoft
  • 需要实现JSON导入时载入枚举、数组长度(length > 1)信息。@Bosn

MockJS 有序枚举详解

例如用户导入一组数据为:

[{
    "a" : 1,
    "b" : true
}, {
    "a" : 222,
    "b" : false
}, {
    "a" : 243,
    "b" : true
}]

为生成的MockJS模板,可以导出上面的数据,需要指定每个字段的值,并且要保证顺序。

MockJS模板示例

例如MockJS模板(猜想的、或者期望的支持方式)

// 这也是目前MockJS的问题,不能指定最外层结构,请参考上次给出的渗透模型虚拟根节点的定义,这里__root__是虚拟根节点,|3表示有3组数据。
{
    "__root__|3" :  [{
        "a" : "@order(1, 222, 243)",
        "b" : "@order(true, false, true)"
    }]
}

数据库创建问题

http://thx.github.io/RAP/resources/RAP-deploy/#h5 初始化数据库的这个文档是不是有问题啊,另外我没看到 sql 里面有创建 database 的。
还有执行 /database/crate_table.sql 的时候,出现错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'tb_production_line' at line 1

设置接口响应参数列表时,如何设置返回数组对象

新版本提供了两种类型的返回格式:对象、数组。
对于数组,希望返回的是一个数组对象,且能够让mock生成多个项。
但是设定了返回类型为数组,且设定了响应参数后,生成的数据(数组对象),长度一直是1。
是否有什么方式可以让其随机生成不同长度的数组对象?

MockJS视图编辑

  1. 增加MockJS文档编辑视图,用户可以以Mock.js模板的视图编辑接口结构。
  2. 保存前预览模拟数据。
  3. MockJS标签与备注拆分。

缺少了依赖的lib - prettytime.jar

在 com.taobao.rigel.rap.project.bo.Project.java 中用到了 org.ocpsoft.prettytime.PrettyTime, 但 WebContent/WEB-INF/lib 目录下却没有包含依赖的 prettytime.jar, 需要添加上去, 否则项目无法编译通过

[需求]接口文档复制、移动和挂载[before 7.6]

实现接口(Action)级的位置变化操作

需求

实现接口(Action)级的位置变化操作。特别说明一下引用,表示不同的页面下引用其它的请求,修改会同步。实现上可能有点复杂...

跟踪

  • UI、界面开发
  • 移动功能:从一个位置、移动到另一个位置。
  • 复制功能:从一个位置,复制到另一个位置。
  • 挂载功能:另一个位置引用该接口

xss数据模拟

可否考虑对数据项增加xss选项,来模拟xss攻击数据。提前暴露安全问题

初始化用的 update.sql 修改 tb_project 表结构失败

当执行如下语句时, 会执行失败

ALTER TABLE tb_project
ADD COLUMN update_time timestamp NOT NULL
        DEFAULT now();

Error Code: 1293. Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause

看错误描述, 是因为不能出现2个DEFAULT值是CURRENT_TIMESTAMP
因此需要做出如下修改:

ALTER TABLE tb_project
ADD COLUMN update_time timestamp NOT NULL;

并增加如下的初始化数据(初始公司, 产品线, 分组和历史项目)

INSERT INTO tb_corporation (id, name, logo_url, user_id) VALUES ('1', '测试公司', '', '1');
INSERT INTO tb_production_line (id, name, project_num, corporation_id, user_id) VALUES ('1', '测试产品线', '1', '1', '1');
INSERT INTO tb_group (id, name, production_line_id, user_id) VALUES ('1', '测试分组', '1', '1');

update tb_project set group_id = 1 where id >= 0;
update tb_project set update_time = current_timestamp where id >= 0;

提议

在部署使用RAP时,无论是插件地址,还是跨域请求的host都是rap.alibaba.com,是否可以独立出来以配置的方式管理,谢谢

希望支持字典对象的数据模拟

  1. 希望支持字典对象的数据模拟,key和value都在mock里随机指定一个数组范围
{
    airCompany:{
        "CA":"国航",
        "CZ":"南方航空"
    }
}
  1. 希望模拟当前系统时间数据
{
    time : 1398062130000
}

重复注册的问题

BUC账户接入有同学@乐东 发现了重复注册账户的问题。

排查中...

在客户端使用RAP插件,同一个页面如何调用多个接口

RT,客户端使用RAP插件,引用相应的URL,
同一个页面,调用一个接口(一个Project),能够正常执行。
但是如果调用多个接口(多个project),则后面的接口地址无法正常处理。
比如:

<script type="text/javascript" src="http://10.23.117.115:8080/rap.plugin.js?projectId=1"></script> <script type="text/javascript" src="http://10.23.117.115:8080/rap.plugin.js?projectId=2"></script>

……

<script> $.ajax({ url: 'getProductList4Page', type: 'POST', dataType: 'json', success: function(data){ $("#jsonContent").html(JSON.stringify(data,null,4)); } }); $.ajax({ url: 'getUserList', type: 'POST', dataType: 'json', success: function(data){ $("#jsonContent2").html(JSON.stringify(data,null,4)); } }); </script>

getProductList4Page接口数据获取正常,但是getUserList请求失败,提示找不到。(发现浏览器里面获取的地址是localhost,而不是rap的服务器,getProductList4Page地址是正确的)。

无法注册用户

jkd

# java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

tomcat 7

注册用户时报错

<2014-06-25 18:21:35> <http-bio-8080-exec-3> com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:242) 
<ERROR> ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 'passwordConfirm' on 'class com.taobao.rigel.rap.account.web.action.AccountAction: Error setting expression 'passwordConfirm' with value '[Ljava.lang.String;@4992d3b1'

<2014-06-25 18:21:35> <http-bio-8080-exec-3> org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:77) 
<WARN> SQL Error: 1048, SQLState: 23000

<2014-06-25 18:21:35> <http-bio-8080-exec-3> org.hibernate.util.JDBCExceptionReporter.logExceptions(JDBCExceptionReporter.java:78) 
<ERROR> Column 'create_date' cannot be null

更换开发环境IDE

Bosn实在受不鸟超级烂到家的Eclipse了!!!正在准备切换到IDEA社区版,有更好的推荐求介绍!

修复UNIT-TEST CASE错误

  • 所有的MOCK默认规则升级导致的
  • seajs BUG导致的
  • 修复奇怪的/base请求错误

线上unit-test错误已全部修复,但是依然有console错误,具体错误信息如下。

RAP自动化测试组件报错

image
如上图所示:

后台报错如下:

<2014-08-11 16:23:30> com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:242)
ParametersInterceptor - [setParameters]: Unexpected Exception caught setting '' on 'class com.taobao.rigel.rap.mock.web.action.MockAction: Error setting expression '' with value '[Ljava.lang.String;@1e48fc3'

<2014-08-11 16:23:30> com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:242)
ParametersInterceptor - [setParameters]: Unexpected Exception caught setting '_ksTS' on 'class com.taobao.rigel.rap.mock.web.action.MockAction: Error setting expression '_ksTS' with value '[Ljava.lang.String;@e62ec'

<2014-08-11 16:23:30> com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:242)
ParametersInterceptor - [setParameters]: Unexpected Exception caught setting '_ksTS' on 'class com.taobao.rigel.rap.mock.web.action.MockAction: Error setting expression '_ksTS' with value '[Ljava.lang.String;@1e50694'

<2014-08-11 16:27:56> com.opensymphony.xwork2.interceptor.ParametersInterceptor.setParameters(ParametersInterceptor.java:242)
ParametersInterceptor - [setParameters]: Unexpected Exception caught setting 'b1407745676157' on 'class com.taobao.rigel.rap.workspace.web.action.WorkspaceAction: Error setting expression 'b1407745676157' with value '[Ljava.lang.String;@f29347'

请帮忙看一下是那部分的配置没有做好?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.