猿问

如何建立一个接受任何请求的休息服务?

我想测试我的集成服务。因此,我需要一个休息服务,它接受对任何 url 的任何请求并以 HTTP 200 响应 - OK。(稍后,答案将是可配置的,基于 url。)


如何使用 spring-boot 构建这样的服务?


我尝试使用自定义HandlerInterceptor,但这只有在网址公开时才有效:


@Configuration

public class WebMvcConfig implements WebMvcConfigurer {


  @Override

  public void addInterceptors(InterceptorRegistry registry) {

    registry.addInterceptor(new AllAccessInterceptor());

  }


  private static class AllAccessInterceptor extends HandlerInterceptorAdapter {


    @Override

    public boolean preHandle() {

      response.setStatus(HttpServletResponse.SC_OK);

      return true;

    }


  }


}


白衣非少年
浏览 148回答 2
2回答

万千封印

我认为 Spring Boot 整体上,特别是 Spring MVC 并不是为了简单地做到这一点,所以任何解决方案总体来说都不会是简单和好的。所以,是的,拦截器在技术上可以是一个解决方案,但是接下来,您将如何配置实际答案(除了 200 状态之外,还应该有一些数据发送回调用方部分)。要检查的请求是一个 post 请求,您希望检查一个非常具体的表单的正文。根据您的评论我想在本地启动我的接受者服务。比起将其配置为我想在我的计算机上手动进行开发测试的服务的远程服务。考虑使用Wiremock作为模拟服务器。它的工作方式与mockito非常相似:您将能够指定期望,例如“如果我使用以下参数调用远程服务 - >返回该答案”等等。从技术上讲,它回答了您的问题,因为您确实不需要为每个期望规范实现 enpoint,而这正是wiremock 所做的。您甚至可以在测试期间使用 docker 中的测试容器运行它,这样它将在测试开始时启动并在测试结束时停止,但这是一个不同的主题。

交互式爱情

我自己找到了答案。我需要return ,而不是true在方法中返回。这将不允许进一步执行.preHandlefalseInterceptors
随时随地看视频慕课网APP

相关分类

Java
我要回答