Anypoint Platform API治理规则集开发:多规则兼容与驼峰校验需求
API治理规则集问题
示例API定义
/example: /{uriParams}: get: is: [defaultResponses, commonHeaders] uriParameters: uriParams: description: 示例描述uriParams body: application/json: example: !include examples.example.json
需求与问题
我要开发一套API治理规则集,完成三项检查:
- 检查请求/响应体是否通过
!include引入示例 - 检查端点是否应用了
defaultResponses、commonHeaders这类traits - 新增规则:检查所有字段名称是否符合驼峰命名规范(示例:
camelCase、exampleTwo)
当前遇到的问题:规则集无法同时生效——当文件中同时包含traits规则和示例检查规则时,仅traits规则起作用;删除traits规则后,示例检查规则才正常工作,希望两类规则能协同生效。
当前编写的规则集代码
provide-examples: message: 请求和响应体必须包含示例 targetClass: apiContract.Payload rego: | schema = find with data.link as $node["http://a.ml/vocabularies/shapes#schema"] nested_nodes[examples] with data.nodes as object.get(schema, "http://a.ml/vocabularies/apiContract#examples", []) examples_from_this_payload = { element | example = examples[_] sourcemap = find with data.link as object.get(example, "http://a.ml/vocabularies/document-source-maps#sources", []) tracked_element = find with data.link as object.get(sourcemap, "http://a.ml/vocabularies/document-source-maps#tracked-element", []) tracked_element["http://a.ml/vocabularies/document-source-maps#value"] = $node["@id"] element := example } $result := (count(examples_from_this_payload) > 0) traits: message: 必须应用通用默认traits targetClass: apiContract.EndPoint propertyConstraints: apiContract.ParametrizedTrait: core.name: pattern: defaultResponses camel-case-fields: message: 字段名称必须使用驼峰命名(camelCase) targetClass: apiContract.EndPoint if: propertyConstraints: shacl.name: in: ['path'] then: propertyConstraints: shacl.name: pattern: "^[a-z]+([A-Z][a-z]+)*$"
内容的提问来源于stack exchange,提问作者Anonim
相关产品推荐
相关产品推荐

