Есть ли что-то конкретное, что мне нужно сделать, чтобы получить api в magento?
Я посещаю / api / soap /? Wsdl на моей локальной установке (1.7) и возвращает следующую ошибку:
Invalid webservice adapter specified.
Все выглядит на сайте, но я не могу найти информацию о других шагах, которые мне нужно сделать, чтобы заставить api работать.
Я решил это из htaccess, отключив параметр MultiViews следующим образом:
из
<Directory /var/www/magento> Options Indexes FollowSymLinks MultiViews </Directory>
в
<Directory /var/www/magento> Options +Indexes +FollowSymLinks -MultiViews </Directory>
Существует другой подход, если вы хотите поддерживать совместимость со старыми вызовами API. По какой-то неясной причине мой сервер Apache не анализирует строку ^api/...
во время разбора перезаписи.
Но вы все равно можете использовать http://www.somedomain.com/api/v2_soap?wsdl=1
не изменяя PHP-код Magento. Вам просто нужно изменить .htaccess следующим образом:
Заменить в .htaccess:
RewriteRule ^api/([az][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]
от
RewriteRule ^api(\.php)?/([az][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L]
(см. ^ Api.php / вместо ^ api /)
И еще лучше, если некоторые из вас, http://www.somedomain.com/api/V2_soap?wsdl=1
(V2_soap в верхнем регистре), вам нужно будет добавить RewriteMap
для использования внутренней функции apache для установки в нижнем регистре параметра , Добавьте на свой виртуальный хост RewriteMap:
RewriteMap lc int:tolower
И в .htaccess
RewriteRule ^api(\.php)?/([a-zA-Z][0-9a-z_]+)/?$ api.php?type=${lc:$2} [QSA,L]
Это установит строчный параметр для скрипта api.php, а также примет «V2_soap» в регулярном выражении
Эта последняя часть была приведена @dreeves в этом ответе
Я решил это путем редактирования в моем файле виртуального хоста (/etc/apache2/sites-available/mag.dev.conf)
следующим образом:
<Directory /var/www/mag/mag> Options +Indexes +FollowSymLinks -MultiViews ..... </Directory>
теперь его загрузка xml-ответа.
Платформа – ubuntu 12.04