【问题标题】:Laravel responding with html default page ignoring controllerLaravel 响应 html 默认页面忽略控制器
【发布时间】:2023-01-18 18:04:53
【问题描述】:

我正在尝试使用此代码制作自定义 Auth 控制器:

<?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;

class AuthController extends Controller
{
    public function register(Request $request)
    {
        //validate the request
        $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:8|confirmed',
        ]);

        $data = $request->all();

        //create new user
        $user = User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

        //return response
        return response()->json(['message' => 'Successfully created user!'], 201);
    }
}

控制器应该在数据库中创建一个新的用户条目,用户模型是 Laravel 的默认模型,没有做任何更改。

在我的 api.php 路由文件中,我有这个简单的路由设置:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\AuthController;


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

Route::post('/register', [AuthController::class, 'register']);

问题是,当我尝试向 /api/register 发送 POST 请求时,Laravel 使用默认的 html 页面进行响应:

我在这里做错了什么?考虑到这应该只是我应用程序的后端,所以我不需要设置任何视图

【问题讨论】:

  • 运行php artisan optimize和composer dum-autoload并检查
  • 您还可以运行php artisan route:list 来查看路由是否已正确定义。
  • 身份验证路由已正确配置,但问题仍然存在
  • 如果您分享错误代码,将更容易找到问题
  • 你能在验证之前 dd() 并检查它是否通过 register() 方法吗?

标签: php laravel api


【解决方案1】:

你能展示你的路由文件是什么样子的吗,你能附上你得到的响应页面的副本吗?

【讨论】:

  • 这是不是答案
  • 问题已编辑
猜你喜欢
  • 1970-01-01
  • 2017-07-14
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
相关资源
最近更新 更多