-
groovy如何调用java_groovy如何使用java接口测试框架发送http请求
2021-02-25 19:00:30本人在使用java写框架做http接口测试的过程中,经过大神指点思路,发现用例还是要用脚本语言来做会更加...groovy的文档发送http请求个人感觉略微麻烦了,而且我已经封装好了发送和接受请求的方法,以及一些其他功...本人在使用java写框架做http接口测试的过程中,经过大神指点思路,发现用例还是要用脚本语言来做会更加有利于后期的用例执行和用例管理。最近在研究大神推荐的groovy脚本语言,略有一些小成绩。下面分享一下如何在groovy里面使用自己写的基于java的接口测试框架来发送http请求的方法。groovy的文档发送http请求个人感觉略微麻烦了,而且我已经封装好了发送和接受请求的方法,以及一些其他功能。
思路如下:把写好的框架打包jar包,然后再groovy里引入,直接使用框架的方法发送http请求,并做响应的处理。
分享groovy代码:
1import net.sf.json.JSONObject
2import org.apache.http.client.methods.HttpGet
3import source.FanLibrary
4
5class one extends FanLibrary {
6 static void main(String[] args) {
7 def httpGet = new HttpGet("http://cost-api.fissionpie.com/cost?_t=200&_app=1&_v=1.0.0&token=601_200_1524035146010_d78096e246592dfa&userId=56&type=1&maxId=0&length=10");
8 def response = getHttpResponseEntityByJson(httpGet);
9 println response
10 }
11}
下面是返回结果:
往期文章精选
-
java restful netty_Java+Netty实现的RESTful框架--netty-rest-server
2021-02-28 17:15:53摘要:在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。 该框架提供了控制器注解、全局...摘要: 在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。 该框架提供了控制器注解、全局异常控制器、拦截器等功能。
在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。
该框架提供了控制器注解、全局异常控制器、拦截器等功能。
注解名称参考了Spring MVC,编译理解和记忆,主要包括如下注解:
@RestController
@RequestMapping
@GetMapping
@PostMapping
@DeleteMapping
@PutMapping
@PatchMapping
@JsonResponse
@RequestParam
@PathVariable
@RequestBody
@UploadFile
@UrlEncodedForm
@RequestHeader
Controller示例:
//默认为单例,singleton = false表示启用多例。
//@RestController(singleton = false)
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("")
@JsonResponse
public ResponseEntity listUser() {
// 查询用户
User user = new User();
user.setId(1);
user.setName("Leo");
user.setAge((short)18);
return ResponseEntity.ok().build(user);
}
@PutMapping("/{id}")
public ResponseEntity> putMethod(@PathVariable("id") int id, @RequestBody String body) {
// 更新用户
return ResponseEntity.status(HttpStatus.CREATED).build();
}
@DeleteMapping("/{id}")
public ResponseEntity> deleteMethod(@PathVariable int id) {
// 删除用户
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}
@PostMapping("")
public ResponseEntity> postMethod(@RequestBody String body) {
// 添加用户
JSONObject json = JSONObject.parseObject(body);
User user = new User();
user.setId(json.getIntValue("id"));
user.setName(json.getString("name"));
user.setAge(json.getShortValue("age"));
return ResponseEntity.status(HttpStatus.CREATED).build(user);
}
}
拦截器示例:
public final class CorsInterceptor implements Interceptor {
@Override
public boolean preHandle(FullHttpRequest request, HttpResponse response) throws Exception {
// 使用axios发送cookie,这里不能用*,需要使用Web前端地址,如:http://localhost:8080
// response.getHeaders().put("Access-Control-Allow-Origin", "*");
response.getHeaders().put("Access-Control-Allow-Origin", System.getProperty("http.origin"));
response.getHeaders().put("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE, PATCH");
response.getHeaders().put("Access-Control-Max-Age", "3600");
response.getHeaders().put("Access-Control-Allow-Headers", "Content-Type,X-Token");
response.getHeaders().put("Access-Control-Allow-Credentials", "true");
return true;
}
@Override
public void postHandle(FullHttpRequest request, HttpResponse response) throws Exception {
}
@Override
public void afterCompletion(FullHttpRequest request, HttpResponse response) {
}
}
启动服务:
@Test
public void test() {
// 忽略指定url
WebServer.getIgnoreUrls().add("/favicon.ico");
// 全局异常处理
WebServer.setExceptionHandler(new ExceptionController());
// 设置监听端口号
WebServer server = new WebServer(2006);
// 设置Http最大内容长度(默认 为10M)
server.setMaxContentLength(1024 * 1024 * 50);
// 设置Controller所在包
server.setControllerBasePackage("org.leo.web.controller");
// 添加拦截器,按照添加的顺序执行。
// 跨域拦截器
server.addInterceptor(new CorsInterceptor(), "/不用拦截的url");
try {
server.start();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
测试服务
-
java netty_Java+Netty实现的RESTful框架--netty-rest-server
2021-02-12 09:26:42在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。该框架提供了控制器注解、全局异常控制器...在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。
该框架提供了控制器注解、全局异常控制器、拦截器等功能。
注解名称参考了Spring MVC,编译理解和记忆,主要包括如下注解:
@RestController
@RequestMapping
@GetMapping
@PostMapping
@DeleteMapping
@PutMapping
@PatchMapping
@JsonResponse
@RequestParam
@PathVariable
@RequestBody
@UploadFile
@UrlEncodedForm
@RequestHeader
Controller示例:
//默认为单例,singleton = false表示启用多例。
//@RestController(singleton = false)
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("")
@JsonResponse
public ResponseEntity listUser() {
// 查询用户
User user = new User();
user.setId(1);
user.setName("Leo");
user.setAge((short)18);
return ResponseEntity.ok().build(user);
}
@PutMapping("/{id}")
public ResponseEntity> putMethod(@PathVariable("id") int id, @RequestBody String body) {
// 更新用户
return ResponseEntity.status(HttpStatus.CREATED).build();
}
@DeleteMapping("/{id}")
public ResponseEntity> deleteMethod(@PathVariable int id) {
// 删除用户
return ResponseEntity.status(HttpStatus.NO_CONTENT).build();
}
@PostMapping("")
public ResponseEntity> postMethod(@RequestBody String body) {
// 添加用户
JSONObject json = JSONObject.parseObject(body);
User user = new User();
user.setId(json.getIntValue("id"));
user.setName(json.getString("name"));
user.setAge(json.getShortValue("age"));
return ResponseEntity.status(HttpStatus.CREATED).build(user);
}
}
拦截器示例:
public final class CorsInterceptor implements Interceptor {
@Override
public boolean preHandle(FullHttpRequest request, HttpResponse response) throws Exception {
// 使用axios发送cookie,这里不能用*,需要使用Web前端地址,如:http://localhost:8080
// response.getHeaders().put("Access-Control-Allow-Origin", "*");
response.getHeaders().put("Access-Control-Allow-Origin", System.getProperty("http.origin"));
response.getHeaders().put("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE, PATCH");
response.getHeaders().put("Access-Control-Max-Age", "3600");
response.getHeaders().put("Access-Control-Allow-Headers", "Content-Type,X-Token");
response.getHeaders().put("Access-Control-Allow-Credentials", "true");
return true;
}
@Override
public void postHandle(FullHttpRequest request, HttpResponse response) throws Exception {
}
@Override
public void afterCompletion(FullHttpRequest request, HttpResponse response) {
}
}
启动服务:
@Test
public void test() {
// 忽略指定url
WebServer.getIgnoreUrls().add("/favicon.ico");
// 全局异常处理
WebServer.setExceptionHandler(new ExceptionController());
// 设置监听端口号
WebServer server = new WebServer(2006);
// 设置Http最大内容长度(默认 为10M)
server.setMaxContentLength(1024 * 1024 * 50);
// 设置Controller所在包
server.setControllerBasePackage("org.leo.web.controller");
// 添加拦截器,按照添加的顺序执行。
// 跨域拦截器
server.addInterceptor(new CorsInterceptor(), "/不用拦截的url");
try {
server.start();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
测试服务
-
Java+Netty实现的RESTful框架--netty-rest-server
2018-06-22 14:55:55原文链接:点击打开链接摘要: 在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。 该框架...原文链接:点击打开链接
摘要: 在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。 该框架提供了控制器注解、全局异常控制器、拦截器等功能。
在工作中用Netty做了几个服务,感觉Netty做出来的程序性能好,资源占用少,但是实现Http服务比较麻烦,于是就参考Spring MVC的注解基于Netty实现了一个轻量级的RESTful框架。
该框架提供了控制器注解、全局异常控制器、拦截器等功能。
注解名称参考了Spring MVC,编译理解和记忆,主要包括如下注解:
- @RestController
- @RequestMapping
- @GetMapping
- @PostMapping
- @DeleteMapping
- @PutMapping
- @PatchMapping
- @JsonResponse
- @RequestParam
- @PathVariable
- @RequestBody
- @UploadFile
- @UrlEncodedForm
- @RequestHeader
Controller示例:
//默认为单例,singleton = false表示启用多例。 //@RestController(singleton = false) @RestController @RequestMapping("/users") public class UserController { @GetMapping("") @JsonResponse public ResponseEntity<User> listUser() { // 查询用户 User user = new User(); user.setId(1); user.setName("Leo"); user.setAge((short)18); return ResponseEntity.ok().build(user); } @PutMapping("/{id}") public ResponseEntity<?> putMethod(@PathVariable("id") int id, @RequestBody String body) { // 更新用户 return ResponseEntity.status(HttpStatus.CREATED).build(); } @DeleteMapping("/{id}") public ResponseEntity<?> deleteMethod(@PathVariable int id) { // 删除用户 return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); } @PostMapping("") public ResponseEntity<?> postMethod(@RequestBody String body) { // 添加用户 JSONObject json = JSONObject.parseObject(body); User user = new User(); user.setId(json.getIntValue("id")); user.setName(json.getString("name")); user.setAge(json.getShortValue("age")); return ResponseEntity.status(HttpStatus.CREATED).build(user); } }
拦截器示例:
public final class CorsInterceptor implements Interceptor { @Override public boolean preHandle(FullHttpRequest request, HttpResponse response) throws Exception { // 使用axios发送cookie,这里不能用*,需要使用Web前端地址,如:http://localhost:8080 // response.getHeaders().put("Access-Control-Allow-Origin", "*"); response.getHeaders().put("Access-Control-Allow-Origin", System.getProperty("http.origin")); response.getHeaders().put("Access-Control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE, PATCH"); response.getHeaders().put("Access-Control-Max-Age", "3600"); response.getHeaders().put("Access-Control-Allow-Headers", "Content-Type,X-Token"); response.getHeaders().put("Access-Control-Allow-Credentials", "true"); return true; } @Override public void postHandle(FullHttpRequest request, HttpResponse response) throws Exception { } @Override public void afterCompletion(FullHttpRequest request, HttpResponse response) { } }
启动服务:
@Test public void test() { // 忽略指定url WebServer.getIgnoreUrls().add("/favicon.ico"); // 全局异常处理 WebServer.setExceptionHandler(new ExceptionController()); // 设置监听端口号 WebServer server = new WebServer(2006); // 设置Http最大内容长度(默认 为10M) server.setMaxContentLength(1024 * 1024 * 50); // 设置Controller所在包 server.setControllerBasePackage("org.leo.web.controller"); // 添加拦截器,按照添加的顺序执行。 // 跨域拦截器 server.addInterceptor(new CorsInterceptor(), "/不用拦截的url"); try { server.start(); } catch (InterruptedException e) { e.printStackTrace(); } }
测试服务
-
SSH框架真有那么好吗?
2011-09-06 15:19:19记得以前最开始学JAVA的时候,大家就在说SSH必须要学、如何如何好、如何火等。到现在我在JAVA方面工作快三年了,这几年的工作中从未使用过SSH框架中的任何一种,上过班的这几个公司都没有谁在使用这几个框架。它真的... -
Asp.net框架与SpringMvc框架简单分析
2019-02-20 09:59:00分析的方法又通过java的类之间进行相互调用,个人感觉来回跳转调用好麻烦不过肯定有其优点 2.而Asp.net框架只有前台和后台,可以互相引用数据,可以调用公共类库中的方法; 可以说框架比较简单 转载于:... -
三大框架学习之----struts2框架的搭建(一)
2015-10-01 11:21:33最近开始学习java框架,刚开始接触,感觉配置struts2好麻烦,刚开始的时候,总出错,终于赶在午饭之前成功了,写下搭建步骤,希望共同学习。 -
TestFrameWork API接口测试框架
2015-11-22 16:49:46写一些API接口,写好了测试感觉比较麻烦,还要自己写接口文档,就想能不能将测试和接口文档结合一下,就自己写了这个轮子,它可以接口测试,同时根据我们测试的代码生成相应的md格式的文档,还有一些问题,在完善 ... -
【java项目实践】在eclipse中使用利用mybatis-generator自动生成Model、Dao、mapping代码
2016-08-29 17:22:26之前用MyBatis框架的时候,都是手敲的代码,就感觉到好麻烦的样子。今天学习了利用MyBatis Generator自动生成代码,那接下来我就来详细介绍一下MyBatis Generator配置过程及其使用方法。 总结下该插件的使用及... -
java dom4j 处理 xml
2011-10-25 13:29:26后来接触到了dom4j 这个家伙,无聊之时尝试的去用了一下,感觉真的很好用,如果说使用sax解析xml 是相当于纯js写代码,那么dom4j 就相当于 jQuery框架这么好用。 package chenluozhi; import java.io.File; ... -
java swagger后端接口测试
2020-09-19 21:09:35测试接口的工具很多,postman,postwoman就是不错的选择,但感觉打开应用还是有点麻烦和慢,还是喜欢直接浏览器测试接口,所以我推荐swagger. 先官方的介绍一下swagger: Swagger 是一个规范和完整的框架,用于生成、... -
php框架之美 yii学习笔记之一
2011-02-27 23:13:00在java里面有很多web框架,并且很多培训机构就是给你培训这些框架,我一直都不怎么喜爱用框架,感觉框架是那么的麻烦和把你框住了,让你只能按他的方式行动,并且最重要的是把你给架住了。但是框架也有其相当不错的... -
Spring.net框架
2011-06-11 14:32:10为了更好的理解文中的内容,最好顺序阅读。 作为一个应用系统,代码复用至关重要。如果在你的设计中,类与类存在很强的相互关联,那么你会发现在重用这些组件时就存在很严重的问题。在 Step1到Step3-Reflection的... -
SSM框架实现复杂的Excel导出功能(原创,转载请注明出处,谢谢!)
2017-10-17 13:49:00最近项目开发当中要求实现导出功能,查看了很多人的博客但是感觉对于复杂的导出还是感觉好麻烦,代码量太大,为此,想了多种方法,最后找到了最简洁的一种方法,如下: 1.要实现的导出功能模板如下: 2.按常规解决... -
基于SpringJDBC的轻量级ORM框架sborm.zip
2019-07-19 04:42:44现在注解模式貌似也挺不错),感觉mybatis更适合存在dba角色的年代,可以远离代码进行sql调优,复杂的查询拼装起来也更加优雅(java基本 就是if else ...),但是对于查询业务简单但是数据库集群环境的场景有点憋屈... -
多研究些架构,少谈些框架(2)-- 微服务和充血模型
2020-12-31 18:10:56所以很多情况下大家用数据库的存储过程来替代Java写逻辑反而效果会更好,(ps:用了Spring boot也不是微服务),</li></ul> 领域模型的开发模式 <ul><li>领域模型是将数据和行为封装... -
框架还支持使用KCP协议,KCP也是可靠UDP协议,据说比ENET性能更好,使用kcp请注意,需要自己加心跳机制,否则20秒没收到包,服务端将断开连接。协议可以无缝切换。 11. 3D Recast寻路功能 可以Unity导出场景数据,...
-
欢迎使用CSDN-markdown编辑器
2015-05-14 20:05:53开通博客的第一篇文章,之后努力更新文章,虽然不定期,文章水,但希望能帮助...当时感觉框架配置超麻烦,而且写的时候没感觉有多少方便。心里毛毛的总感觉自己是不是连边都没摸到。 2015年也就是今年5月初重新学习SS -
04:Gin开发
2020-01-28 18:11:58以前学习Java的时候,连JDBC都感觉好麻烦,明明只是要执行一条SQL,却要处理那么多技术细节。用了MyBatis或者Hibernate,终于实现ORM转换了,不过也需要一堆配置。不过Go里就更麻烦了,因为各数据库几乎都没有GDBC,... -
缓存选型-Ehcache、memcached、Redis
2015-04-02 22:06:11那么问题来了,用哪个缓存框架好?Ehcache项目一直用它,不过版本可能有点低。确实很方便,就一个jar包搞过来就行。java的首选。Memcached用c写的,比较麻烦,要安装。与java集成的资料感觉不是很多。Redis也是要... -
sitemesh学习笔记(1)
2014-07-28 20:21:00这样就感觉开发变得好臃肿啊,并且,有时候改一个元素,就要把所有包含这个元素的页面全部重新码一遍,亲们,是不是觉得很麻烦啊,我也觉得很麻烦。所以快来使用sitemesh框架吧,哈哈。 下面我做了一个demo,来基本... -
喜欢上了play framework
2012-01-09 10:39:10使用了半个多月的play ,真得感觉很爽,以前一直使用ssh,那时候我就想有没有一种框架集成ssh,不用我们去集成ssh了,好麻烦,也使用过一个集成好ssh的框架,但也需要些一些配置文件。 现在我终于使用上我想用的东西... -
Spring Security系列一 权限控制基本功能实现
2020-03-20 09:57:44但也正是因为功能强大,使用起来就变的非常的麻烦,至少个人感觉很烦很烦,甚至觉得Spring Security是不是应该为常规的Java web应用出一个简化版?相对而言Shiro就清爽很多,当然这里不讨论谁好谁坏,能解决项目的...