RestClient:Android下的Rest Testing
Restful是一种设计风格,很有优秀的API都采用了这种风格。
本文介绍一个简单的Android APP:RestClient。得益于自己对美和简洁有着天生的洁癖,也得益于对Volley源码的了如指掌,花了几天的时间,简单的用了所谓的MVP架构,功能是差不多了,凌乱的代码也懒得再花时间重构了(毕竟很多时候,我觉得漂亮就够了)。
功能和UI Design
我一直坚信,简洁可以产生美。
按照极简的设计,APP核心只有三个功能:Add Rest、Rest Testing、Preview Response。
-
Add Rest 在增加一个Restful接口时,需要包含Rest的各种元素,请求URL、请求Method、请求参数、请求Header、对于POST和PUT请求,还有请求体等。对于参数、请求头、请求体需要有增删改的功能,这一切,都将在一个页面内渲染完成。

-
Rest Testing 核心的模拟请求功能放在页面的右上角,点击后开始计时,可以随时终止请求。请求结束后,显示响应信息,包含请求耗时。

-
Preview Response 对于rest接口的响应,我们首先最关心的是成功与否,所以Response Code直接展现在toolbar上,绿色背景的toolbar表示成功,红色则表示错误。其次,我们关心的是响应内容,预览不同格式的响应内容将是很重要的一个功能。

Request之Volley
Volley支持取消请求,并且统计每个请求的耗时。更多内容,参见Volley 源码设计
//设置超时时间为20s
request.setRetryPolicy(new DefaultRetryPolicy(20000, 0, 0f));
//设置不缓存
request.setShouldCache(false);
//Abort 请求
request.cancel();
在响应类NetWorkResponse中,含有如下响应内容:
/** The HTTP status code. */
public final int statusCode;
/** Raw data from this response. */
public final byte[] data;
/** Response headers. */
public final Map<String, String> headers;
/** True if the server returned a 304 (Not Modified). */
public final boolean notModified;
/** Network roundtrip time in milliseconds. */
public final long networkTimeMs;
Response之预览JSON、Html、Xml
内容预览分为两部分:格式化和着色。
- 格式化
JSON的格式化采用了Gson(相比较fastjson,我更喜欢用Gson)。
Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
XML格式化采用Jdom2。
SAXBuilder jdomBuilder = new SAXBuilder();
Document jdomDoc = jdomBuilder.build(new StringReader(text));
XMLOutputter xml = new XMLOutputter();
xml.setFormat(Format.getPrettyFormat());
text = xml.outputString(jdomDoc);
- 着色
着色采用WebView+highlight.js方案,注意对于HTML和XML的着色,需要首先对特殊符号进行转义,如<、>等符号,转义可以使用org.apache.commons.text.StringEscapeUtils工具类。
More
RestClient支持Basic Authorization的鉴权方式。
其它也没有什么更多的想说的,就想写一句:能力越大,责任越大,对我如此,对团队也是如此。