【问题标题】:Consuming an external api with Laravel 8使用 Laravel 8 使用外部 api
【发布时间】:2021-03-04 03:26:14
【问题描述】:

我没有使用get 方法但仍然收到此错误:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException 此路由不支持 GET 方法。支持的方法:POST。

这是我的控制器:

<?php
namespace App\Http\Controllers\api;
use  App\Http\Controllers\Controller;
use Illuminate\Http\Request
use GuzzleHttp\Client;

class loginuser extends Controller
{
    public function log()
    {
        $client = new Client();
        $response = $client->request('POST', 'http://132.148.19.159/OAuth/Token');
        $statusCode = $response->getStatusCode();
        $body = $response->getBody()->getContents();

        return $body;
    }
}

这是我的路线:

Route::post('login_user', [loginuser::class, 'log']);

【问题讨论】:

  • 你如何测试这个?是在浏览器中吗?
  • 如果我们假设您使用的是正确的路线。那么路由的缓存可能会导致问题。你可以试试这个php artisan route:clear 然后php artisan route:cache
  • 我已经这样做了,但没有成功。
  • 您确定您看到的错误涵盖了 Guzzle 调用吗?似乎您正在使用 get 而不是 POST 访问自己的 loginuser 日志路由。您看到的错误来自 Symfony,而不是 Guzzle。验证日志函数中的代码是否实际执行。
  • 我已经使用邮递员测试了外部 api,我得到了令牌访问的响应,现在我尝试使用 laravel 来使用它并且它不起作用。我使用 httpClient 然后 Guzzle 只是为了得到同样的错误。

标签: laravel post controller


【解决方案1】:

据我所知,你安装包composer require guzzlehttp/guzzle 然后在你的控制器中:

<?php
namespace App\Http\Controllers\api;
use  App\Http\Controllers\Controller;
use Illuminate\Http\Request
use Illuminate\Support\Facades\Http;

class loginuser extends Controller
{
    public function log()
    {
        $response = Http::post('http://132.148.19.159/OAuth/Token');
        $body = $response->body();
        return $body;
    }
}

参考:https://laravel.com/docs/8.x/http-client

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 2021-01-10
    • 2017-05-09
    相关资源
    最近更新 更多