其实思路很简单,通过通配符获取请求url的路径,然后配置自己所需要的响应信息,再通过配置HttpServletResponse返回给前端相应的数据。
- Controller
@RequestMapping("/mock/**")
public void mockTest(HttpServletRequest request, HttpServletResponse response){
mockService.dynamicMock(request, response);
}
- Service
@Override
public void dynamicMock(HttpServletRequest request, HttpServletResponse response) {
String requestPath = request.getServletPath().replace("/mock","");
// 下面这一行,替换为自己的业务代码,拿到想要的报文,响应代码,响应头等
MockDO mockDO = new LambdaQueryChainWrapper<>(mockMapper).eq(MockDO::getPath, requestPath).one();
// 设置HttpServletResponse结果,这里只以“报文”和“响应代码”举例
try {
// 设置报文
OutputStream outputStream = response.getOutputStream();
byte[] dataByteArr = mockDO.getResponseBody().getBytes(StandardCharsets.UTF_8);
outputStream.write(dataByteArr);
// 设置响应代码
response.setStatus(mockDO.getResponseCode());
} catch (IOException e) {
e.printStackTrace();
}
}
我们配置一个mock接口
状态码设置为405
然后去请求该接口(当然,这里要带上你自己服务器的url前缀),可以看到我们已经成功拿到了想要的报文信息和响应代码,mock已经可以通过以上方式进行动态配置。