// Simple predicates
'tacocat'.startsWith('taco')
// Parameterized predicates over structured data
account.balance >= transaction.withdrawal
// JSON objects
{'sub': '12345678',
'aud': 'example2.cel.dev',
'iss': 'https://example1.cel.dev/jwt-issuer'}
// Strongly typed objects
common.GeoPoint{ latitude: 10.0, longitude: -5.5 }
快速而安全的表达语言
通用表达式语言 (CEL) 是一种表达式语言,可在对性能要求较高的应用中快速、可移植且安全地执行。CEL 旨在嵌入应用中,具有特定于应用的扩展,并且非常适合扩展应用可能已经在使用的声明式配置。
将 CEL 用于 API 调用的列表过滤器、协议缓冲区的验证限制以及 API 请求的授权规则等。
快速
加快了对性能关键型路径的表达式评估(从纳秒到微秒)。
轻巧便携
对开发者友好、轻量级且支持跨多个 Google 和外部系统采用通用语法的轻量级开发者。
可扩展
支持子集和扩展,易于嵌入,还可以根据配置和政策要求进行定制。
安全
非 Turing 完成,仅访问主机应用提供的数据。
![](https://cel.dev/static/images/cel-assess.png?authuser=8&%3Bhl=zh-cn&hl=zh-cn)
CEL 是否适合您的项目?
CEL 非常适用于对性能至关重要的应用,因为它能够安全快速地(纳秒至微秒)进行评估,并且费用可预测。CEL 表达式特别适用于谓词逻辑和简单的数据转换。
在对表达式的求值频繁但修改不频繁的应用中,CEL 的使用效率最高。例如,根据安全政策评估 HTTP 请求是 CEL 的一个很好的用例。对于 CEL 安全政策表达式,验证表达式需要一次性配置成本,之后会对表达式进行非常频繁的评估,成本几乎可以忽略不计。
仍然不确定?您可以查看 CEL 概览和语言定义,也可以直接与我们联系!我们非常乐意为您提供帮助。
为 CEL 做贡献
想为 CEL 项目提供帮助?为我们的开源代码和文档做贡献。我们非常期待您的帮助!