覆盖 URL
关于Microprofile OpenAPI Spec: OASFilter,我们可以覆盖authorizationUrl
如下示例:-
package my.filter;
import org.eclipse.microprofile.config.Config;
import org.eclipse.microprofile.config.ConfigProvider;
import org.eclipse.microprofile.openapi.OASFilter;
import org.eclipse.microprofile.openapi.models.security.SecurityScheme;
public class DemoOASFilter implements OASFilter {
@Override
public SecurityScheme filterSecurityScheme(final SecurityScheme securityScheme) {
Config config = ConfigProvider.getConfig();
String myUrl = config.getValue("my.url",
String.class);
securityScheme.getFlows().
getImplicit().
setAuthorizationUrl(myUrl);
return securityScheme;
}
}
然后将我们的全限定类名作为mp.openapi.filter
at 的值,META-INF/microprofile-config.properties
如下例所示
mp.openapi.filter=my.filter.DemoOASFilter
my.url=http://some/url
不仅覆盖authorizationUrl
,OAuthFlow还为我们提供覆盖tokenUrl
,refreshUrl
等等。除了implicit
,OAuthFlows还提供了authorizationCode
,clientCredentails
和其他的。此外,OASFilter接口也让我们可以覆盖更多,例如APIResponse
、tag
、server
等。
与集成Microprofile: Config
Config config = ConfigProvider.getConfig();
String myUrl = config.getValue("my.url",
String.class);
我已经尝试将 URL 配置放在META-INF/microprofile-config.properties
上面的示例中,但没有实现,因为它给了我一个java.util.NoSuchElementException
.
无论如何environment variable
和system properties
都实现了。
docker run -it \
--env my.url=http://some/url \
....
java -Dmy.url=http://some/url -jar ....