我有一个 api 可将一些信息导出到
csv
文件。 API 是正确的,当我从浏览器访问它时,它正在下载我的文件。我需要从终端访问此 API 并下载文件,而无需转到浏览器。
我的 API 路线如下:
Route::get('/api/file/export', 'File\FileController@export', [
'middleware'=>'auth.basic'
]);
我尝试像这样使用curl:
curl --user email:password http://example.com/api/file/export
我尝试了不同的curl命令,但每个命令都显示重定向到登录html。当我使用
-O
下载文件的命令时,它会下载一个具有重定向到登录链接的文件。
curl --user email:password -O http://example.com/api/file/export
我调用API是否正确?我还能如何从终端访问 API?
您应该首先登录您的网站。你可以试试这个:
curl --user email:password http://domain.tld/login_page
然后将 cookie 用于您的第二个请求:
curl --cookie http://domain.tld/file/to/export
如果这不起作用,您需要使用 cURL 执行整个提交操作,这意味着使用电子邮件和密码等执行 POST 请求。
有人在这里给出了很好的解决方案
PS:检查一下您是否也不需要令牌来请求 API。
{“代币”:“eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vYmV0YS5hcGkuY25lLmNsL2FwaS9sb2dpbiIsImlhdCI6MTY4ODU3MjU0OCwiZXhwIjoxNjg4NTc2 MTQ4LCJuYmYiOjE2ODg1NzI1NDgsImp0aSI6Ik1aRHh6Z1RmSXl5T3czVm0iLCJzdWIiOiI0Iiw icHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NZZmNyJ9.E02axzI-8b fjBXM70nn8QkxP__G4SJih2MoE-eOnwbw"}