ホームページ  >  記事  >  Java  >  SpringBoot フィルタはプロジェクト内でインターフェイス フィルタリングをどのように実装しますか?

SpringBoot フィルタはプロジェクト内でインターフェイス フィルタリングをどのように実装しますか?

WBOY
WBOY転載
2023-05-15 08:10:101305ブラウズ

ビジネス

ビジネス ニーズのため、2 つのプロジェクト セットがあり、1 つはルーティング センター、もう 1 つはビジネス システムです。

現在の問題は、ルーティング センターが統合していることです。 WeChat 公式アカウントとミニ プログラム モジュール機能により、ビジネス システムは複数のサービス セットを展開します。

次に、ルーティング センターに電話して、インターフェースを指定されたビジネス システムに再ルーティングする必要があります。

SpringBoot フィルタはプロジェクト内でインターフェイス フィルタリングをどのように実装しますか?

対処する必要がある問題

  • ミニ プログラムとパブリック アカウント ユーザー情報をビジネス システムにバインドする

  • ルーティングセンターと業務システムのインターフェース インターフェースの判定

  • #ユーザー情報から見つかった業務システムのサービスを該当する業務システムに配信

  • パブリックアカウントのユーザー情報と業務 システムがバインディングを行う

処理手順

業務システムには携帯電話番号があり、ユーザーが登録すると携帯電話が番号は記録のためにルーティング センターに送信されます

ルーティング センターはインターフェイスとビジネス システムの間のインターフェイスを決定します

処理手順

1. インターフェイス マッピングを取得しますルーティング センター システムで

    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 サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。