当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

smartpost

HTTP 请求代理工具
授权协议 Apache
开发语言 Java
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 国产
投 递 者 吉岳
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

该项目是一个HTTP请求代理工具,可以实现录入请求信息管理,请求组合,将会自动保存请求服务返回的cookie 当组合多个请求的时候,如何请求返回的cookie信息将会在后面的请求中返回给服务端。 是为了方便给restful接口进行测试而设计开发的。当前只满足基本功能,后续将会继续再次基础上面进行完善。

已经部署在 PaaS@OSC:http://smartpost.oschina.mopaas.com/ 

主要功能介绍

基础信息的录入

该部分功能主要是将请求信息录入到smartpost中,录入的信息包括http请求头部信息,请求方式POST/GET以及请求的参数。

请求参数设置说明

smartpost对请求参数支持form表达提交的数据,该参数是键值对的形式,如果是POST那么将会以key1=value1的形式提交到服务器端,如果是GET形式,则键值对参数追加到请求地址后面。除了form表单参数提交外,还支持json,xml,html以及text的格式参数。如果选中json,那么发送给服务器端的Content-type就是application/json;charset=UTF-8,依次类推:xml则是application/xml;charset=UTF-8;text:text/plain;charset=UTF-8;html:text/html;charset=UTF-8。所以选中非form的参数类型以后,不需要再在header里面设置Content-type属性,除非你有特殊的需求。

场景

我们在开发过程中,一般为了调试一个接口,可能需要发起多个url请求,比如一个查看商品的流程:
1. 首先需要打开电商网站的首页
2. 查看商品

这里涉及到至少两个个url的请求(首页,商品)。而且这两个请求在smartpost里面可以组合成一个场景,可以叫做【查看商品】。你可以执行该场景,那么将会依照设定的URL请求循序来执行请求,并返回执行结果。

smartpost在这里所做的只是一个请求的组合。但是这样还不够,可以看到上面上个请求存在一定的关系。我这里先假设这个电商网站的地址是(假设这个请求叫做request_index)

http://www.smpmall.com

上面是个首页的地址,打开首页将会看到很多的商品。我们一般会选择一个商品,我不如再假设该电商网站首页布局是这样的:

<!-- lang: html -->
 <html>
 <head>
 <title>首页</title>
 </head> 
 <body>
        <div id="items">
            <div class="item">
                    <img src="xxxx.jpg">
                    <a href="item-1222.html"></a>
            </div>
            <div class="item">
                    <img src="xxxx.jpg">
                    <a href="item-1223.html"></a>
            </div>
        </div>
 </body>
 </html>

那么假设我选择上面item-1222.html,在smartpost里面怎么做额?只需要将这个请求定义为(假设这个请求叫做request_item)

http://www.smpmall.com/#{html:'#items .item a&[attr:href]'[0]}

当这个请求发生在request_index之后,那么将会从request_index请求返回的html里面解析出item-1222.html这个内容替换上面#{html:'#items .item a&[attr:href]'[0]}表达式。

这里就是smartpost的存在上下文的场景,这也是smartpost设定场景的必要性。基于这个,开发可以对整个业务流程进行测试。下面将对上下文的占位符配置进行描述:

引用占位符配置

smartpost的占位符配置主要分文几个部分

#{type:'expression'[index][default:defaultvalue]}

其中type可以是:html,json,header,cookie
expression则是当前类型的匹配规则,比如type为header的时候,此时的expression则是header中的key值
[index]是可选配置,表示如果通过expression匹配了多个,则只取指定的第几个
[defalut:defaultvalue]也是可选配置,表示当没有匹配到制定的expression的值时,默认值是多少
下面主要对各个类型的expression进行描述

1、type为header时

这个上面已经例举了,当type为header的时候,expression表示是header的key值,将会将key对应的value替换该占位符

2、type为cookie时

和为header类似,只是从返回的cookie里面取值

3、type为json时

此时expression是一个JSONPATH表达式,具体规则可以到这里看看 https://github.com/jayway/JsonPath

4、type为html时

这里的expression包含两个部分前面是一个css选择器,用于指定html元素,另一个是这个元素的哪个值。所以是这个结构:cssselector&[text|val|attr:attrName]
关于前面的cssselector这里就不说了,应该都知道,说一下后面的&[text|val|attr:attrName]
比如上面的#{html:'#items .item a&[attr:href]'[0]}表示#items .item a CSS选择器匹配的元素第0个元素属性为href的值。只有为attr的时候需要指定是哪个属性的值。

 相关资料
  • 当我运行npm运行开始,我得到 然后我使用http请求,但是我得到 代理错误:无法将请求/crm/api/boss/admin/doLogin从localhost:8080代理到https://qa6boss.qjdchina.com. 看见https://nodejs.org/api/errors.html#errors_common_system_errors 欲了解更多信息(EPROTO)。

  • 假设您想对某个网站执行https请求,但中间有一个代理。 上述代理不查看请求,只是在用户代理使用HTTP连接方法后将所有流量中继到实际的HTTPS服务器(如中所示http://www.web-cache.com/Writings/Internet-Drafts/draft-luotonen-web-proxy-tunneling-01.txt)。 现在我的问题是:在代理打开到目标Web服务器的SS

  • 关于 ReactJS 在开发和生产中应该如何工作,我有几个问题。我的 ReactJS 应用程序是从创建应用样板开始构建的。我有一个Spring靴后端在端口 8080 上侦听。我注意到的第一件事是,如果我设置一个这样的代码来发出请求,代码就会挂起: 我需要把它转换成: 然后添加一行: 这工作得很好。问题是,当我把它放在一个正式生产环境(或集成环境)中时,我有一个像http://www.mywebsi

  • 可以代理请求上下文中的数据,支持静态方法调用和对象方法调用。 示例 假设有这么一个类: <?php namespace Imi\Test\Component\RequestContextProxy; class A { public function add($a, $b) { return $a + $b; } } 定义代理类 RequestCont

  • 我使用以下设置使用apache构建转发代理服务器: 主机文件 然后我使用curl测试代理服务器 输出 我认为https代理流是: > 代理服务器将此连接请求转发到www.google。com。香港:443 www.google。com。hk:443向代理服务器返回200连接建立的响应 代理服务器将响应转发给curl curl开始向代理服务器发送tls握手数据报(可能是加密的?) 代理服务器对数据报

  • 问题内容: 简短,简单的介绍了出色的Python 请求模块。 我似乎在文档中找不到变量“代理”应包含的内容。当我发送带有标准“ IP:PORT”值的字典时,它拒绝要求2个值。所以,我猜(因为文档中似乎没有涵盖),第一个值是ip,第二个值是端口? 文档只提到了这一点: 代理–(可选)字典到代理URL的映射协议。 所以我尝试了这个……我该怎么办? 在将它们放入字典之前,我应该将它们转换为某种类型吗?

  • 问题内容: 我正在使用以下网址: 正如我在“ myserver.com”的“ access.log”中看到的那样,使用了客户端的系统代理。但是我想完全禁止使用代理。 问题答案: 我目前了解的 完全 禁用代理的唯一方法是: 建立会议 设置于 使用该会话创建您的请求 import requests session = requests.Session() session.trust_env = Fal

  • 问题内容: 我正在使用JQuery向我自己的Web服务发出AJAX请求。我需要为HTTP-AJAX-Request 设置或修改HTTP- Header,如何才能最简单地做到这一点? 我尝试了某些用户提供的使用方法来设置User- Agent的提示,但这不起作用。实际上,它确实适用于其他新创建的标头(如),但不适用于。 谢谢! 问题答案: 这完全是不可能的,不允许您更改XMLHttpRequests