API Platform 3 如何声明非标识符、非关联的路径参数?
API Platform v3 中非关联实体属性的路径参数配置
当然可以声明这种既非标识符、也不需要通过Link()关联实体属性的路径参数,具体做法如下:
- 首先在操作的路径中直接定义参数,比如:
/resource/{id}/{custom_param} - 然后在操作的
uriVariables配置里,显式声明这个参数的类型,不需要关联任何实体属性或Link实例,以此避免系统默认把它当成实体ID处理。
举个实际代码示例(用Attribute方式配置):
use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\UriVariable; #[Get( path: '/resource/{id}/{custom_param}', uriVariables: [ 'id' => new UriVariable(fromClass: YourEntity::class), // 关联实体ID 'custom_param' => new UriVariable(type: 'string') // 自定义非关联参数 ] )] class YourEntity { // ... 实体属性 }
在这个示例里,custom_param就是一个独立的路径参数,不需要映射到实体的任何属性,也不需要用Link()来关联,系统会正确识别它并传递给对应的控制器方法。
如果不定义uriVariables里的条目,API Platform v3确实会默认把路径参数当成实体的ID来处理,所以必须显式配置uriVariables来声明这类自定义参数,才能避免默认行为。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

