首页 > 解决方案 > 生成 API 和 laravel 护照

问题描述

我是 Laravel 的新手,请回答我的问题。

我正在使用 Laravel 5.8 开发一个系统,其中包含两个用户级别。

  1. 用户
  2. 行政

  • 经过身份验证的用户可以查看帖子并将其存储到数据库中。(动作indexshowstore
  • 并且经过身份验证的管理员可以查看用户发布并批准发布的帖子。(动作:indexshow和)storedestroy
  • 我的数据库表:书籍如下:

  • ID
  • 姓名
  • numbers_of_pages
  • 类型
  • 作者
  • 和用户表:

  • ID
  • 姓名
  • 电子邮件
  • 密码
  • 和管理员表:

  • ID
  • 姓名
  • 电子邮件
  • 密码
  • 第一个问题:

    在我的api.php

    Route::apiResource('books', 'BookController');
    

    跟随是我想要的路线结构。

    # index()
    // http://127.0.0.1:8000/api/v1/books/drama -> get all books where type is drama
    // http://127.0.0.1:8000/api/v1/books/novel -> get all books where type is novel
    // http://127.0.0.1:8000/api/v1/books/magazine -> get all books where type is magazine
    

    如何使用由命令创建的 BookController 来实现这一点:

    php artisan make:controller BookController --api
    

    以及如何在路由中添加v1前缀?我不想在 RouteServiceProvider.php 中添加该版本号的前缀。

    另一个问题:
    如何验证多个用户?管理员和用户都是 api 的消费者。

    标签: laravelapifilterresourceslaravel-passport

    解决方案


    因为我现在正在自己开发一个api,我知道你的一些问题并且已经成功完成了这个任务,所以我试着回答你的问题。

    到 URL 中的“v1”前缀:我在我的routes/api.php文件中使用

    Route::prefix('/v1')->group(function () { 
    // my routes for version 1
    }
    

    一个词代表您的用户/管理员内容:我没有将其放入 2 个单独的表中。这个想法是,你有一堆用户,其中只有一些是管理员。那么为什么不用一个admin标志来标记它们并给用户模型(在你的User.php)一个方法is_admin来返回,如果这个标志设置为trueor false。所以你可以看到,登录用户是否是管理员。

    有了这个,你可以随时在你的应用程序中检查这个,auth()->user()->is_admin看看这是否是管理员。

    希望,我可以帮助你一点

    现在,你的Books问题。我会简单地将另一条路线放入我的routes/api.php喜欢中

    Route::get('books/{category}', 'BookController@category')->name('books.category');
    

    并创建一个名为public function category(String $category)my的新函数BookController。在此,您可以检查是否$category是有效的类别名称并处理退货。


    推荐阅读