1

通过 Postman 和 curl向/api/productsand发出经过身份验证的 GET 请求时,我遇到了 500 错误。/api/categoriesAPI请求是:

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"} []

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

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

Orocommerce 版本:4.2.1

当前本地化设置: 在此处输入图像描述

4

1 回答 1

0

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

我们试图在一个干净的 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标头显式设置本地化。

于 2021-02-17T12:11:59.717 回答