ビジネス ニーズのため、2 つのプロジェクト セットがあり、1 つはルーティング センター、もう 1 つはビジネス システムです。
現在の問題は、ルーティング センターが統合していることです。 WeChat 公式アカウントとミニ プログラム モジュール機能により、ビジネス システムは複数のサービス セットを展開します。
次に、ルーティング センターに電話して、インターフェースを指定されたビジネス システムに再ルーティングする必要があります。
ミニ プログラムとパブリック アカウント ユーザー情報をビジネス システムにバインドする
ルーティングセンターと業務システムのインターフェース インターフェースの判定
業務システムには携帯電話番号があり、ユーザーが登録すると携帯電話が番号は記録のためにルーティング センターに送信されます
ルーティング センターはインターフェイスとビジネス システムの間のインターフェイスを決定します
private static List<String> URLS = new ArrayList<>(); @Resource private WebApplicationContext applicationContext; @Override public void init(FilterConfig filterConfig) throws ServletException { applicationContext .getBean(RequestMappingHandlerMapping.class) .getHandlerMethods() .forEach((k, v) -> { k.getPatternsCondition().getPatterns().stream().forEach(s-> URLS.add(s)); }); log.info("过滤器初始化"); }
2. リクエスト インターフェイス パスを取得します
HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; String requestName = request.getRequestURI();
3. ルーティング センターのインターフェイスかどうかを判断します
if (URLS.contains(requestName)) { //系统接口 chain.doFilter(servletRequest, servletResponse); } else { //业务系统接口 需要代理 // 代理请求 ResponseEntity<String> redirect = routerService.redirect(request, response, "xxx", "xxx"); //设置将字符以"UTF-8"编码输出到客户端浏览器 response.setCharacterEncoding("UTF-8"); //通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码 response.setHeader("content-type", "application/json; charset=utf-8"); response.getWriter().write(redirect.getBody()); }
すべてのコード
リーリー以上がSpringBoot フィルタはプロジェクト内でインターフェイス フィルタリングをどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。