在上一章的内容中,我简单介绍了整个微服务的各个子模块,还封装了一些工具类。
当然,若还没完成上次内容的也可以点击右侧的传送门------传送门
EngineApplication
在开发测试引擎模拟接口之前,还需要给xxx-engine创建一个SpringBoot的启动类。
@SpringBootApplication
@EnableTransactionManagement
@EnableFeignClients
@EnableDiscoveryClient
public class EngineApplication {
public static void main(String[] args) {
SpringApplication.run(EngineApplication.class,args);
}
}
那么这里的几个接口需要有以下几个内容:
- get提交
- post提交
- json格式
- 表单格式
- 需要以上模拟接口需要支持参数化和随机响应延迟
login
@RequestMapping("/api/v1/test/login_form")
@ResponseBody
public JsonData login(String mail, String pwd){
if(mail.startsWith("a")){
return JsonData.buildError("账号错误");
}
return JsonData.buildSuccess("mail=" + mail + "pwd=" + pwd);
}
使用form表单形式提交,不可以使用json形式提交。
使用postman来测试,测试结果如下:
pay
@PostMapping("/api/v1/test/pay_json")
@ResponseBody
public JsonData pay(@RequestBody Map<String,String> map) {
String id = map.get("id");
String amount = map.get("amount");
return JsonData.buildSuccess("id="+id+",amount="+amount);
}
这个方法使用的是post提交,且使用json形式进行提交。
继续使用postman进行测试,测试结果如下:
paySleep
这个方法会在上面pay方法上,增加随机睡眠时间的功能。
@PostMapping("/api/v1/test/pay_json_sleep")
@ResponseBody
public JsonData paySleep(@RequestBody Map<String,String> map) {
try {
int value = RandomUtil.randomInt(1000);
TimeUnit.MICROSECONDS.sleep(value);
String id = map.get("id");
String amount = map.get("amount");
return JsonData.buildSuccess("id="+id+",amount="+amount+",sleep="+value);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
还是使用postman进行测试,测试结果如下:
queryDetail
@GetMapping("/api/v1/test/query")
@ResponseBody
public JsonData queryDetail(Long id){
return JsonData.buildSuccess("id="+id);
}
这个方法使用的是get方式提交,并以form表单形式提交。
测试如下:
querySleep
@GetMapping("/api/v1/test/query_sleep")
@ResponseBody
public JsonData querySleep(Long id){
try {
int value = RandomUtil.randomInt(1000);
TimeUnit.MICROSECONDS.sleep(value);
return JsonData.buildSuccess("id="+id+",sleep="+value);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
这个方法是从以上方法添加了随机睡眠时间的功能
测试如下:
queryError
@GetMapping("/api/v1/test/query_error_code")
@ResponseBody
public JsonData queryError(Long id, HttpServletResponse response){
if(id % 3 == 0){
response.setStatus(500);
}
return JsonData.buildSuccess("id="+id);
}
id取模3是0后则http状态码500
测试如下:
以上均为本册测试引擎模拟接口实战