0

何らかの理由で、RestlerのAPI Explorer(Swagger UIのフォーク)を使用してAPIを本番環境にデプロイすると、ロード時に一般的な404エラーが発生します。

/api/explorer

私がより明確で述べているとき:

/api/explorer/index.html

ページのフレーミングをロードしますが、ヘッダーの下に赤いテキストで「404:NotFound../resources.json」と報告します。

ここに画像の説明を入力してください

同じファイルがローカルで機能するため、環境に問題が発生していることは間違いありません。ディレクトリ内の.htaccessファイルも確認しましたが、/api/explorer次のように表示されます。

DirectoryIndex index.php
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^$ index.html [QSA,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.html [QSA,L]
</IfModule>

どんな助けでもいただければ幸いです。

4

4 に答える 4

2

すべての問題はmod_rewriteの問題に起因していることがわかりました。httpd.confこの問題が1つの環境で発生したのに、まったく同じで他の環境では発生しなかった理由については、まだ100%ではありません.htaccess。まあ、解決策は、RewriteBaseディレクティブを使用してベースURLに関する書き換えルールで明示的にすることです。

APIディレクトリに次の.htaccessファイルがあります。

DirectoryIndex index.php
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /api
    RewriteRule ^$ index.php [QSA,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

API-Explorerディレクトリには、次のものがあります.htaccess

DirectoryIndex index.php
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /api/explorer
    RewriteRule ^$ index.html [QSA,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.html [QSA,L]
</IfModule>

この問題をトラブルシューティングするために私が遭遇した貴重なヒントの1つは、Apacheのmod_rewriteロギングをオンにすることです。

# Adding logging for Rewrites
RewriteLog logs/rewrite.log
RewriteLogLevel 2

httpd.confこれを;のグローバルスコープ領域に配置します。ロギングに関してすでに存在していたエントリの周りに配置しましたが、必要に応じて最後に配置することもできます。さらに、書き換えのトラブルシューティングに関する基本事項には、次のものが含まれます(この基本事項の場合はお詫びします)。

  1. httpd.confにAllowOverride AllOptions FollowSymLinksRestlerにサービスを提供しているディレクトリが設定されていることを確認してください。
  2. すべての構成をファイルに入れて、ファイルを完全httpd.confに回避することができます(そして、その方法でも少し高速です)が、そうする場合は、相対URLに対して絶対URL参照が.htaccessあることを覚えておいてください。httpd.conf.htaccess
于 2013-02-11T17:37:15.647 に答える
0

ReadMeファイルはRestlerGithubページ https://github.com/Luracast/Restler-API-Explorer#readmeで確認できます。

于 2013-02-05T21:20:32.370 に答える
0

'Luracast \ Restler \ Resources'クラスを追加して、APIルートにresources.jsonを作成しましたか?

独自のindex.phpでは、addAPIClassセクションは次のようになります。

$r = new Restler();

$r->addAPIClass('Luracast\\Restler\\Resources'); //this creates resources.json at API Root

// ... your own addApiClass

$r->handle();

「使用」の下のドキュメントにありますが、これも理解するのに苦労しました...

于 2013-02-07T06:12:14.023 に答える
0

APIルートに書き込み権限のあるキャッシュディレクトリがあることを確認してください

于 2015-10-02T10:50:58.170 に答える