微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Orocommerce - 对产品和类别的经过身份验证的 GET 请求失败

如何解决Orocommerce - 对产品和类别的经过身份验证的 GET 请求失败

我在通过 Postman 和 curl 向 /api/products/api/categories 发出经过身份验证的 GET 请求时遇到 500 错误。 API 请求是:

curl -X GET \
  'http://HOST-IP/api/products?page[number]=1&page[size]=10&sort=id' \
  -H 'Accept: application/vnd.api+json' \
  -H 'Authorization: Bearer XXX' \
  -H 'Content-Type: application/vnd.api+json'

从 prod.log 中,/api/products输出是:

api.ERROR: The execution of "oro_api.load_entities_by_entity_serializer" processor is Failed. 
{"exception":"[object] (ErrorException(code: 0): Call to a member function getId() on null 
at /var/www/html/commerce/vendor/oro/commerce/src/Oro/Bundle/RedirectBundle/Api/Processor/ComputeUrlFields.PHP:83)","action":"get_list","requestType":"rest,json_api,frontend","version":"latest","class":"Oro\\Bundle\\ProductBundle\\Entity\\Product"} []

检查 ComputeUrlFields.PHP 的第 83 行,引用了 LocalizationHelper,它存在于:/var/www/html/commerce/vendor/oro/platform/src/Oro/Bundle/LocaleBundle/Helper

这些 API 通过沙盒成功运行。此外,我还可以发出其他经过身份验证的 API 请求,例如 GET /api/productimages/api/productfamilies。对失败有什么想法吗?我没有更改 AWS Marketplace 映像中的任何捆绑包。

电子商务版本:4.2.1

当前本地化设置:

enter image description here

解决方法

您的环境或管理设置似乎有问题。

我们尝试在干净的 AWS 实例上重现问题,但没有成功。 另外,请注意,没有“/api/categories”资源,但有“/api/mastercatalogcategories”可以与您的重现步骤没有问题,与“/api/products”相同。

根据堆栈跟踪,本地化检测或默认本地化配置有问题。见https://doc.oroinc.com/user/back-office/system/configuration/system/general-setup/global-localization/

我建议使用 xDebug 来查找根本原因,或者作为一种解决方法,您可以使用 X-Localization-ID 标头显式设置本地化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。