18

Magento で API を動作させるために必要な特定のことはありますか?

ローカル インストール (1.7) で /api/soap/?wsdl にアクセスすると、次のエラーが返されます。

Invalid webservice adapter specified.

サイトですべてが有効になっているように見えますが、API を機能させるために必要な他の手順に関する情報が見つかりません。

4

3 に答える 3

37

次のようにMultiViewsオプションをオフにすることで、htaccessからこれを解決しました。

から

<Directory /var/www/magento>
            Options Indexes FollowSymLinks MultiViews
</Directory>

<Directory /var/www/magento>
            Options +Indexes +FollowSymLinks -MultiViews
</Directory>
于 2013-06-10T11:42:55.817 に答える
2

古い API 呼び出しとの互換性を維持したい場合は、別のアプローチがあります。なんらかの理由で、Apache サーバーは^api/...書き換えの解析中に文字列を分析しません。

ただし、http://www.somedomain.com/api/v2_soap?wsdl=1Magento PHP コードを変更せずに引き続き使用できます。次のように .htaccess を変更するだけです。

.htaccess で置き換えます。

RewriteRule ^api/([a-z][0-9a-z_]+)/?$ api.php?type=$1 [QSA,L]

RewriteRule ^api(\.php)?/([a-z][0-9a-z_]+)/?$ api.php?type=$2 [QSA,L](^api/ の代わりに ^api.php/ を参照してください)

また、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によってもたらされました

于 2013-04-09T08:46:30.397 に答える