在 API Platform 2.7 中,响应正文包含具有 null 值的字段,升级到 API Platform 3 后,响应正文不包含具有 null 值的字段。这是故意的还是由于我需要进行配置更改。
我从 api/docs 页面为 2.7 和 3.0 执行了相同的调用,我希望结果是相同的。
API Platform 2.7 类 Patient 的响应 { "@context": "/api/contexts/Patient", "@id": "/api/患者/8110", "@type": "Patient", "account": " /api/accounts/8110"、"accountId": 8110、"isDependent": false、"isGuardian": false、"组织": "/api/organizations/765"、"电子邮件": null、"标题": null ,“firstName”:“CA”,“middleInitial”:“A”,“lastName”:“患者”,“后缀”:null,“photoMedia”:null,“sex”:“男性”,“birthDate”:“ 2000-01-01T00:00:00+00:00", "addressLineOne": "5759 Witting Corners", "addressLineTwo": null, "city": "Marvintown", "zipCode": "35507", "state" : { "@id": "/api/states/681", "@type": "州", "缩写": "CA" }, "电话号码": "617-491-0000", "手机号码": null, "工作编号": null }
API Platform 3.0 类 Patient 的响应 { "@context": "/api/contexts/Patient", "@id": "/api/患者/8110", "@type": "Patient", "account": " /api/accounts/8110"、"accountId": 8110、"isDependent": false、"isGuardian": false、"组织": "/api/organizations/765"、"firstName": "CA"、"middleInitial" :“A”,“姓氏”:“患者”,“性别”:“男”,“出生日期”:“2000-01-01T00:00:00+00:00”,“addressLineOne”:“5759 Witting Corners” , "city": "Marvintown", "zipCode": "35507", "state": { "@id": "/api/states/681", "@type": "State", "abbreviation": " CA" }, "电话号码": "617-491-0000", }
与这个问题相关
你只需要在你的normalization_context中将skip_null_values设置为false,因为从3.0.0 beta 1开始,他们决定默认情况下它会变成true。
如果您需要所有资源都为 false,您可以在以下位置设置默认值config/packages/api_platform.yaml:
api_platform:
...
defaults:
normalization_context:
skip_null_values: false
Run Code Online (Sandbox Code Playgroud)