【问题标题】:Problem with Route::apiResource() Laravel Framework 8.64.0Route::apiResource() Laravel 框架 8.64.0 的问题
【发布时间】:2021-12-01 12:12:48
【问题描述】:

我正在使用 laravel 8 (Laravel Framework 8.64.0) 创建 API。但是,当调用我用 Route::apiResource 定义的端点时,它不会从查询中返回结果,也不会返回任何内容。

路由\api.php

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\TodoController;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
    return $request->user();
});

//Route::get('/todos', [TodoController::class, 'index']);

Route::apiResources([
    'todos' => TodoController::class,
]);

模型\Todo.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Todo extends Model
{
    use HasFactory;

    protected $fillable = [
        'user_id',
        'name',
        'is_done',
        'due_at',
        'completed_at',
    ];
}

控制器\TodoController.php

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Todo;

class TodoController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return Todo::all();
    }

如果我添加另一条路线:

Route::get('/todos', [TodoController::class, 'index']);

我称之为,它有效。 可能是什么问题?

【问题讨论】:

    标签: laravel api


    【解决方案1】:

    您可能想尝试通过运行创建 TodoResource 类扩展 JsonResource

    php artisan make:resource TodoResource
    

    然后在 Todo Controller 索引函数中,将 return Todo::all(); 替换为

    return TodoResource::collection(Todo::all());
    

    【讨论】:

    • 此解决方案没有帮助纠正错误
    【解决方案2】:

    解决方案为什么不起作用,从中删除行

    路由\api.php:

    use App\Http\Controllers\Api\TodoController;
    

    【讨论】:

      猜你喜欢
      • 2019-07-10
      • 2020-01-29
      • 2021-02-04
      • 2014-12-15
      • 2014-06-23
      • 2018-05-28
      • 2017-12-10
      • 1970-01-01
      相关资源
      最近更新 更多