设置 Swagger API 键入 Spring Boot Camel

Set Swagger API Key in Spring Boot Camel

我正在按照 Camel Swagger Java 文档在 Camel 中设置安全定义。

rest("/user").tag("dude").description("User rest service")
    // setup security definitions
    .securityDefinitions()
        .apiKey("api_key").withHeader("myHeader").end()
    .end()
    .consumes("application/json").produces("application/json")
.get("/{id}/{date}").description("Find user by id and date").outType(User.class)
    .security("api_key")

因此,授权元素出现在 Swagger UI 上,但它没有任何功能。

问题是,如何在 Spring 引导中设置 API 键并使授权元素正常工作?

可能不是最好的,但我想出了一个简单的解决方案,使用 if else 语句作为看门人,并通过简单地将提供的 header API KEY 值与原始值进行比较。

一旦我在 Camel 中设置了 securityDefinitions,如我的问题所示,我就在 Swagger UI 上获得了授权元素,其中可以输入 API KEY。

然后我将带有提供的 API KEY header 的请求发送到如下所示的服务 class:

public class Service{

    public void Result(Exchange exchange) {

        Message camelMessage = exchange.getIn();

        String api_key = String.valueOf(camelMessage.getHeader("myHeader"));
        System.out.println("API KEY: " + api_key);

        if(api_key.equals("original_api_key_value")){
            exchange.getOut().setBody("OK API KEY!");
            exchange.getOut().setHeader(Exchange.CONTENT_TYPE, "application/json");
            exchange.getOut().setHeader(Exchange.HTTP_RESPONSE_CODE, 200);
        }else{
            exchange.getOut().setBody("WRONG API KEY!");
            exchange.getIn().setHeader(Exchange.CONTENT_TYPE, "application/json");
            exchange.getIn().setHeader(Exchange.HTTP_RESPONSE_CODE, 401);
        }
   
    }

}