本技能用于在 OroCommerce v6.1 中通过 REST API 暴露实体,并配置相关 API。
配置分为两套防火墙,不可混用:后台 API 使用 Resources/config/oro/api.yml,面向管理员与内部集成,默认支持完整 CRUD;店面 API 使用 Resources/config/oro/api_frontend.yml,面向客户、PWA 与移动应用,通常限制为只读并仅开放部分属性。Bundle 自动发现会在内核编译时加载两者,但防火墙上下文不同,写在 api.yml 中的店面配置会被静默忽略。
实体暴露方式是在 api.yml 的 api.entities 下声明实体类,即可通过 JSON:API 端点自动暴露其全部属性,支持列表/详情 GET 及 POST、PATCH、DELETE。字段可通过 fields 配置:exclude 设为 true 可永不暴露;property_path 可重命名属性;data_type 指定数据类型;direction 可选 output(只读)、input(只写)或默认的 both。对敏感实体可使用 exclusion_policy: all 显式白名单字段。
自定义处理器通过实现 ProcessorInterface 拦截请求并处理数据,使用 oro.api.processor 服务标签注册,可指定 action、group 与 priority。处理器按十组流水线执行:initialize、resource_check、normalize_input、security_check、load_data、data_security_check、transform_data、save_data、normalize_data、finalize,自定义逻辑多放在 normalize_data,priority 数值越大越先执行。
常见问题:api_frontend.yml 配置被忽略(店面需单独文件);处理器优先级顺序导致逻辑未执行;修改 YAML 后未清缓存,会表现为字段缺失、过滤器失效、动作状态过期,应运行 oro:api:cache:clear 与 cache:clear。
资料另附 api-patterns.md(过滤器、排序器、子资源、动作、排除策略与完整实体示例)、processor-groups.md(处理器组参考)以及 v6.1.md(版本特性与迁移说明)。