This page describes how to use the Mixer config expression language (CEXL).
CEXL accepts a subset of Go expressions, which defines the syntax. CEXL implements a subset of the Go operators that constrains the set of accepted Go expressions. CEXL also supports arbitrary parenthesization.
CEXL supports the following functions.
|First non empty|
CEXL variables are attributes from the typed attribute vocabulary, constants are implicitly typed and, functions are explicitly typed.
Mixer validates a CEXL expression and resolves it to a type during config validation. Selectors must resolve to a boolean value and mapping expressions must resolve to the type they are mapping into. Config validation fails if a selector fails to resolve to a boolean or if a mapping expression resolves to an incorrect type.
For example, if an operator specifies a string label as
request.size | 200, validation fails because the expression resolves to an integer.
If an expression uses an attribute that is not available during request processing, the expression evaluation fails. Use the
| operator to provide a default value if an attribute may be missing.
For example, the expression
request.user == "user1" fails evaluation if the request.user attribute is missing. The
| (OR) operator addresses the problem:
(request.user | "nobody" ) == "user1".
|int||request.size if available, otherwise 200.|
|boolean||True if the user is admin or in the admin group.|
|boolean||True if request.user is “user1”, The expression will not error out if request.user is missing.|
|boolean||True if app label is reviews and version label is v3, false otherwise.|