其实思路很简单,通过通配符获取请求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已经可以通过以上方式进行动态配置。


本文介绍了一种通过通配符获取请求URL路径,并动态配置响应信息的方法。具体实现了Controller与Service层的功能,展示了如何设置HttpServletResponse返回自定义的数据。
1045

被折叠的 条评论
为什么被折叠?



