繁体   English   中英

Laravel 7 - 使用 REST API 而不是数据库

[英]Laravel 7 - Use REST API instead of a database

我正在使用 rest api 来存储/检索存储在 postgres 数据库中的数据。 api 不是 laravel,它是一个外部服务!

现在我想用 laravel(框架版本 7.3.0)创建一个网站,我被困在如何正确实现 api 调用上。

例如:我想要一个自定义用户提供程序,用户可以使用它登录网站。 但是提供的凭据的验证是由 api 完成的,而不是由 laravel 完成的。

我怎么做?

编辑:

这可能不是最好的方法。 但这就是我当时所做的。 我尝试 curl 和 guzzle 使用会话 cookie 和标头中的所有内容构建请求,使其看起来像来自 Web 浏览器的请求。 无法让它发挥作用。

我为浏览器使用了网络套接字的通道 ID 我希望更改发生并将其与其他内容连接,然后使用encrypt($string)对其进行encrypt($string) 之后,我使用加密的字符串生成了一个二维码。

移动应用程序(已作为经过身份验证的用户登录)扫描它并使用该 QR 字符串和其他数据发出发布请求。 Passport 负责此请求的身份验证部分。 解密 QR 字符串后,我获得了网络套接字的频道 ID。

然后我用适当的事件数据在那个频道中广播。 在浏览器中捕获该广播并使用 JavaScript 重新加载该页面。

/*... processing other data ...*/     
$broadcastService = new BroadcastService();
$broadcastService->trigger($channelId, $eventName, encrypt($$data));
/*... returned response to the mobile app...*/

我的广播服务:

namespace App\Services;

use Illuminate\Support\Facades\Log;
use Pusher\Pusher;
use Pusher\PusherException;

class BroadcastService {
    public $broadcast = null;

    public function __construct() {
        $config = config('broadcasting.connections.pusher');
        try {
            $this->broadcast = new Pusher($config['key'], $config['secret'], $config['app_id'], $config['options']);
        } catch (PusherException $e) {
            Log::info($e->getMessage());
        }
    }

    public function trigger($channel, $event, $data) {
        $this->broadcast->trigger($channel, $event, $data);
    }
}

在我看来 :

<script src="{{asset('assets/js/pusher.js')}}"></script>
<script src="{{asset('assets/js/app.js')}}" ></script>
<script>
    <?php
    use Illuminate\Support\Facades\Cookie;
    $channel = 'Channel id';
    ?>
    Echo.channel('{{$channel}}')
        .listen('.myEvent' , data => {
            // processing data
            window.location.reload();
        });
</script>

我为此使用了Laravel Echo

同样,这不是最好的方法。 这对我来说仅适用于该特定功能。

可能有很多更好的方法来做到这一点。 如果有人知道更好的方法,请告诉我。


据我了解,您希望通过 REST 实现用户创建和身份验证。 然后从数据库中检索数据。 如果我错了纠正我。

我猜你已经知道如何使用令牌通过 API 进行通信。 你只是被困在如何用 laravel 实现它。

您可以将 Laravel Passport 用于身份验证部分。 它有非常好的文档

另外,请利用这篇中等文章 它将帮助您逐步完成整个过程。

只需通过“php artisan make:controller ControllerName”创建一个注册控制器和一个登录控制器,并在那里编写身份验证逻辑。

在以前的 Laravel 版本中,你有一个像“php artisan make:auth”这样的命令,它可以完成这些操作所需的一切。 但是在 Laravel 7.0 中你需要安装一个叫做 laravel/ui 的包。

运行"composer required laravel/ui"来安装那个包然后运行“php artisan ui bootstrap --auth”,现在你可以运行“php artisan make:auth”

此命令将为您创建整个注册(注册)和登录系统。

为了使用 REST,您可能需要了解 REST (Http) 动词。 了解 GET、POST、PUT、PATH、DELETE 请求以及如何使用 PHP 和 Laravel 收集方法发出这些请求。 了解 JSON 解析、编码和解码。 然后您可以轻松地使用 REST。 并且无需来自其他包的任何模板代码即可工作。

非常感谢。 我希望这个答案能给你一些新的信息/想法。 再次感谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM