API Parameters allow data mapping values in an API definition to be supplied as CLIENT process startup options. Possible use cases for this are:
- A request URI is /api/dev/do-something in the development environment but is /api/prod/do-something in the certification / production environment. API parameters can be used to alter the URI with a value from the CLIENT process startup configuration, eliminating the need to maintain two versions of the API definition.
- A service requires an API key sent in an HTTP header. The value of the API key can be supplied in the CLIENT process configuration, instead of by the application.
The following example illustrates how to alter both the request URI and an API key, without changing the API definition, when migrating an API from a development environment to a certification environment. The steps are:
- Create an operation path with a path component which will contain the environment. For example: /api/{environment}/do-something
- Create the operation. On the Request tab, in the Data Mapping section, add these mappings:
- Target Type URI Path Component, Path Component {environment}, Data Source API Parameter, Parameter Name environment.
- Target Type HTTP Request Header, Header Name the-api-key, Data Source API Parameter, Parameter Name api-key.
- In the CLIENT process configuration, add options for --api-param-environment and --api-param-api-key with the appropriate values.
API Definition
Development Serverclass
== Settings for linkdepth, maxservers, maxlinks, etc are examples, not recommendations. reset server set server cpus 0:1 set server createdelay 0 secs set server deletedelay 15 secs set server highpin on set server linkdepth 5 set server maxservers 1 set server maxlinks 20 set server numstatic 0 set server program client set server tmf off set server debug off set server param api "apifile" set server param base-url "https://dev.example.com" set server param diag-log "+logconf" set server param log "+logconf" set server param monitor "api:5 diag-log:5 log:5" set server param tcpip-process "$ztc0" set server param api-param-environment "dev" set server param api-param-api-key "dev-api-key" add server example
Certification Serverclass
== Settings for linkdepth, maxservers, maxlinks, etc are examples, not recommendations. reset server set server cpus 0:1 set server createdelay 0 secs set server deletedelay 15 secs set server highpin on set server linkdepth 5 set server maxservers 1 set server maxlinks 20 set server numstatic 0 set server program client set server tmf off set server debug off set server param api "apifile" set server param base-url "https://cert.example.com" set server param diag-log "+logconf" set server param log "+logconf" set server param monitor "api:5 diag-log:5 log:5" set server param tcpip-process "$ztc0" set server param api-param-environment "prod" set server param api-param-api-key "prod-api-key" add server example