This projet capsulates ffc server sdk, supports the evaluation of a feature flag by a given user or all feature flags in a specified environment.
docker pull featureflagco/java-server-sdk-wrapper:latest
Requires the following environment variable
envSecret
the environment key for your environment set in featureflag.co. This value is mandatory. if ignore this
variable, an exception will be thrown in the startup process.
offline
if in offline mode - if true is set, the SDK wrapper will not make network connections to featureflag.co for
any purpose. In this case you should initialize the feature flags in using dataFile
or sending all the feature flags
you need by init
API; if false is set, the SDK will attempt to make network connections to featureflag.co and update
the feature flags in streaming mode. Note that init
API and dataFile
can't work any more in online mode. The default
value is true, in offline mode
dataFile
configures the position that the used feature flags will be stored. In the docker container, the default
value is /data/data.json. If the file has already existed, feature flags will be automatically loaded in the
startup process. You can mount a json file in the external systems in order to initialize feature flags when the SDK
wrapper starts up. We strongly recommend you to initialize feature flags in using init API, and featureflag.co
provide an UI to do this.
serverPort
: the embedded server starts on default port 8080.
healthPort
: the health check on default port 8081.
JAVA_OPTS
you want to have the option to add Java command line options at runtime. For example,
java jvm options to launch this app by running the following command:
docker run -it -p 8080:8080 -e envSecret={your-sdk-key} -e JAVA_OPTS=-Xmx128m featureflagco/java-server-sdk-wrapper:latest
you can simply run the app like the following command:
docker run -it -p 8080:8080 -e envSecret={your-sdk-key} featureflagco/java-server-sdk-wrapper:latest
dataFile
and offline
is optional, but it's possible to mount into container and/or to work online, for example:
docker run -it -p 8080:8080 -v {your-path}:/data -e envSecret={your-envSecret} featureflagco/java-server-sdk-wrapper:latest
docker run -it -p 8080:8080 -e offline=false -e envSecret={your-envSecret} featureflagco/java-server-sdk-wrapper:latest
All the requests need a envSecret header, if not existed in header, you will receive a http 400 error; if the envSecret doesn't match the one in SDK wrapper, you will receive a http 401 error; if invalid request posted, you will receive a http 400 error
/api/public/feature-flag/variation
: post method, evaluates a flag value by a given user and a flag key name
Request Body:
{
"featureFlagKeyName": {flag-keyu-name}, #mandatory
"userKeyId": {user-key-id}, #mandatory
"userName": {username}, #mandatory
"email": {email}, #optional
"country": {country}, #optional
"customizedProperties": [ #optional
{
"name": {name},
"value": {value}
}
]
}
Response:
variation
: the flag value
reason
explains how to evaluate the flag value or shows the error info
if id
= -1, it means flag not found or an error; if an error occurs, success
= false and message
shows also the
error info.
{
"data": {
"variation": {flag-value},
"id": {id},
"reason": {reason},
"name": {flag name},
"keyName": {flag key name}
},
"success": true,
"message": "OK"
}
/api/public/feature-flag/variations
post method, get all the flag values from SDK wrapper.
Request Body:
{
"userKeyId": {user-key-id}, #mandatory
"userName": {username}, #mandatory
"email": {email}, #optional
"country": {country}, #optional
"customizedProperties": [ #optional
{
"name": {name},
"value": {value}
}
]
}
Response:
if id
= -1, it means flag not found or an error; if an error occurs, success
= false and message
shows also the
error info.
{
"data": [
{
"variation": {flag-value},
"id": {id},
"reason": {reason},
"name": {flag name},
"keyName": {flag key name}
},
...
],
"success": true,
"message": "OK"
}
/api/public/feature-flag/init
: post method, initializes the feature flags in SDK wrapper.
you should contact us to get a json file, that contains the latest feature flags in your environment, or use data push server in featureflag.co
Response:
{
"success": true,
"message": "Initialization well done"
}
/health
: get method(default port 8081), health check. if UP, HTTP status is 200; if DOWN, HTTP status is 503
Response:
{
"status": {
"code": "UP",
"description": {description}
}
...
}
Do not forget to publish healthPort(8081 by default), if you want health check out of docker container.