@Override
    public SignParameters extract(final HttpRequest httpRequest) {

        String version = httpRequest.getHeaders().getFirst(Constants.VERSION);
        if (Objects.isNull(version)) {
            return SignParameters.VERSION_ERROR_PARAMETERS;
        }

        SignParameterExtractor extractor = VERSION_EXTRACTOR.get(version);

        if (Objects.isNull(extractor)) {
            return SignParameters.VERSION_ERROR_PARAMETERS;
        }

        return extractor.extract(httpRequest);
    }
@Test
    public void testVersionOneExtract() {

        HttpRequest httpRequest = MockServerHttpRequest
                .get("http://localhost:9195/springcloud/class/annotation/get?id=1&id=1")
                .header("timestamp", "1660659201000")
                .header("appKey", "BD7980F5688A4DE6BCF1B5327FE07F5C")
                .header("version", VERSION_1)
                .header("sign", "BF485842D2C08A3378308BA9992A309F")
                .build();

        SignParameters signParameters = new SignParameters(VERSION_1, "BD7980F5688A4DE6BCF1B5327FE07F5C", "1660659201000",
                "BF485842D2C08A3378308BA9992A309F", httpRequest.getURI(), "MD5");
        assertThat(extractor.extract(httpRequest).toString(), is(signParameters.toString()));
    }