Laravel 控制器 -> API 类

Zony86

我正在努力遵循最佳实践如何正确地做到这一点。可能很难解释,但我会在这里尽力而为。

我有一个外部 API,我需要对其进行很多不同的调用。所以我现在所做的是在 App 文件夹中创建一个名为 Api.php 的类。它使用 Guzzle 进行 API 调用。

在视图的控制器中,我在所需的函数中创建了 Api 对象,并在 API 类中调用了相应的函数。

控制器

public function uploadDevice(Request $request)
{
  ## Validation etc is performed

  // Calling the API
  $api = new Api();
  $api->uploadDevice();
}

api.php

class Api
{

    private $token;

    public function __construct(){}

    public function checkIfHasToken(){}

    public function getTokenFromSession(){}

    public function getFreshToken(){}

    public function uploadDevice(){}

}

一些问题

  1. checkIfHasToken()需要在每次请求之前被调用。应该在constructor,first in each function doing API calls或 中完成directly from the Controller
  2. 例外:我应该在哪里进行 Try/catch 等操作?它应该在需要它的 Api 类中完成,还是在控制器中通过调用 API 类中的每个函数并将其包装在 try/catch 中来完成?
  3. 重定向:我想重定向回请求来自的路由,其中​​包含所有可能的错误或成功消息。所以如果我有一个 try/catch 我想重定向包含捕获的结果。把这个逻辑放在哪里?从嵌套函数重定向似乎不起作用。那么我又回到从控制器一个一个地调用 Api 类中的每个函数,并在控制器中分别处理异常/错误/验证?

也许我想太多了,或者让它变得比需要的更复杂。不确定了。

德文·格雷
// Controller
public function __construct(ApiService $apiService)
{
    $this->api = $apiService;
}


public function uploadDevice(Request $request)
{
    // Ensure that the user has a token in a custom HTTP request or in a middleware somewhere
    try {
        $this->api->uploadDevice();
    }
    catch (Exception $exception){
        return redirect()->back();
        //You can include errors from $exception here.
    }
}

// Service
class ApiService
{

    public function uploadDevice()
    {
        return 'I did a thing';
    }

}

说明

Laravel 有很多方法可以做同样的事情,这完全取决于您需要什么以及您希望应用程序如何扩展。

检查令牌是否存在或有效应该在中间件中完成。

try catch 可以在任何地方,这取决于您需要在异常中看到多少,通常只在控制器中就可以了,但是您可以通过多种方式做到这一点。我个人喜欢为任何 http 错误创建一个事件监听器。

从控制器返回重定向可以始终重定向到调用控制器的地方

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel:如何在嵌套资源控制器上为API方法编写策略类?

来自分类Dev

所有其他 API 控制器的 Symfony 4 基本控制器类

来自分类常见问题

目标类控制器不存在-Laravel 8

来自分类Dev

从控制器类Laravel访问模型方法

来自分类Dev

在laravel 5中找不到类控制器

来自分类Dev

For循环在Laravel控制器类中不起作用

来自分类Dev

从控制器Laravel中的助手访问类

来自分类Dev

在Laravel 4中找不到控制器类

来自分类Dev

For循环在Laravel控制器类中不起作用

来自分类Dev

Laravel 5.2中控制器类的单一继承

来自分类Dev

找不到控制器类laravel 5.1

来自分类Dev

没有任何控制器的错误Laravel日志,类

来自分类Dev

如何在 Laravel 的控制器中使用类

来自分类Dev

Laravel 5.5 在控制器中连接你的类

来自分类常见问题

从类库注册Web API控制器

来自分类Dev

Rails api控制器不会从父类继承方法

来自分类Dev

如何从 codeigniter 控制器类调用 coinbase api 方法?

来自分类Dev

从控制器LARAVEL 4调用外部API函数

来自分类Dev

在Laravel的控制器中简化API样板?

来自分类Dev

使用 API 时如何组织 Laravel 控制器

来自分类Dev

TypeScript-Rest API-管理路由器/控制器/类

来自分类Dev

XPages控制器类

来自分类Dev

如何在控制器Laravel中导入自定义类?

来自分类Dev

作业类不接受laravel中控制器发送的参数

来自分类Dev

尝试在Laravel 5.2.15中将验证从控制器转移到请求类

来自分类Dev

laravel 4:Route类中资源和控制器之间的区别

来自分类Dev

Laravel 4子目录控制器不加载Input类

来自分类Dev

在Laravel 4.2 vendor / package / src / controllers目录中找不到控制器类

来自分类Dev

了解PHP / Laravel中的Constructor,$ this关键字和控制器类

Related 相关文章

热门标签

归档