Rumah  >  Artikel  >  Java  >  Bagaimanakah penapis SpringBoot melaksanakan penapisan antara muka dalam projek?

Bagaimanakah penapis SpringBoot melaksanakan penapisan antara muka dalam projek?

WBOY
WBOYke hadapan
2023-05-15 08:10:101339semak imbas

Perniagaan

Disebabkan keperluan perniagaan, terdapat dua set projek, satu pusat routing dan satu lagi sistem perniagaan.

Masalahnya sekarang ialah pusat routing berintegrasi Akaun rasmi WeChat dan Dengan fungsi modul program mini, sistem perniagaan telah menggunakan beberapa set perkhidmatan

Kini anda perlu menghubungi pusat penghalaan untuk mengubah hala antara muka ke sistem perniagaan yang ditetapkan

. Bagaimanakah penapis SpringBoot melaksanakan penapisan antara muka dalam projek?

Isu yang perlu ditangani

  • Ikat program mini dan maklumat pengguna akaun awam dengan sistem perniagaan

  • Ikat antara muka pusat penghalaan dengan sistem perniagaan Antara muka menentukan perkhidmatan sistem perniagaan yang ditemui melalui maklumat pengguna

  • dan mengedarkannya kepada sistem perniagaan yang sepadan

Maklumat pengguna akaun awam dan perniagaan Sistem memang mengikat

Langkah-langkah pemprosesan

Sistem perniagaan mempunyai nombor telefon mudah alih nombor telefon mudah alih akan dihantar ke pusat penghalaan untuk rekod

Pusat penghalaan akan Mengantaramukakan pertimbangan antara antara muka dan sistem perniagaan

Langkah pemprosesan

1 pemetaan dalam sistem pusat penghalaan

    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 Dapatkan laluan antara muka permintaan

        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String requestName = request.getRequestURI();

3 Tentukan sama ada ia adalah antara muka pusat penghalaan

        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());
        }

Semua kodrreeee

Atas ialah kandungan terperinci Bagaimanakah penapis SpringBoot melaksanakan penapisan antara muka dalam projek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam