2016-09-28 6 views
0

私はいくつかの情報をcsvファイルにエクスポートするAPIを持っています。 APIが正しく、ブラウザからアクセスするとファイルがダウンロードされています。私は端末からこのAPIにアクセスし、ブラウザに行かなくてもファイルをダウンロードする必要があります。電子メールとパスワードにcurlを使用する

APIのための私のルートは次のようになります。

Route::get('/api/file/export', 'File\[email protected]', [ 
    'middleware'=>'auth.basic' 
]); 

私はこのようなカールを使用してみました:私は別のカールのコマンドを試してみました

curl --user email:password http://example.com/api/file/export 

が、その後のそれぞれはログインするリダイレクトを表示するHTML 。ファイルをダウンロードするコマンド-Oを使用すると、ログインリンクにリダイレクトされたファイルがダウンロードされます。

curl --user email:password -O http://example.com/api/file/export 

私はAPIを正しく呼び出していますか?どうすれば端末からAPIにアクセスできますか?

+0

これは基本的なHTTP認証を使用しているようですが、エラーとして説明するのは一般的なユーザー名/パスワード認証のようです。 'auth.basic'ミドルウェアをLaravelのデフォルトから修正しましたか? –

+0

いいえ 'auth.basic'ファイルを変更していません。私は何を変えるべきですか? –

+0

Hmm。たぶん私は間違っていますが、あなたはHTTP認証を使用している場合は、 "ログインhtml"が表示されるべきではありません。それはちょうど401 Unauthorizedレスポンスでなければなりません。それにかかわらず、セキュリティを必要とするAPIを構築する場合は、通常、トークンベースの認証を使用します。 [幸運なことに、Laravelには焼きたてのものがある](https://laravel.com/docs/5.3/passport)(ギアを交換する必要があることは分かっているが) –

答えて

0

まず、あなたのウェブサイトにログインする必要があります。それが機能していない場合、あなたは全体がやってPOSTリクエストを意味し、cURLのでアクションを提出行う必要があり
curl --cookie http://domain.tld/file/to/export


curl --user email:password http://domain.tld/login_page

そして、2番目の要求のクッキーを使用する:あなたはこれを試すことができますあなたもあなたのAPIを要求するトークンを必要としない場合はチェックアウト:などのメールアドレスとパスワードで

誰かがgood solution here

PSを与えました。

関連する問題