Laravel 8 api post route 无法正常工作

Posted

技术标签:

【中文标题】Laravel 8 api post route 无法正常工作【英文标题】:Laravel 8 api post route not working well 【发布时间】:2021-08-13 13:29:31 【问题描述】:

我刚刚创建了一个新的 laravel 项目用作 API,但是当我在 api.php 文件中创建一个发布路由时,当我使用 Postman 对其进行测试时它不起作用。

当我尝试这段代码时:

Route::post('/announcement', function (Request $request) 
    return "OK";
);

我得到“OK”的回应: Postman result

但是当我尝试这个时:

Route::post('/announcement', function (Request $request) 

    $request->validate([
        "departure" => "required",
        "destination" => "required",
        "capacity" => "required",
        "price" => "required"
    ]);

    $generated = [
        "uuid" => (string) Str::uuid()
    ];

    $a = new Announcement(array_merge($request->all(), $generated));
    
    return $a->save();
);

服务器将我重定向到主页,我真的不明白发生了什么......

邮递员结果:Postman result

CURL 结果:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta http-equiv="refresh" content="0;url='http://localhost:8000'" />

        <title>Redirecting to http://localhost:8000</title>
    </head>
    <body>
        Redirecting to <a href="http://localhost:8000">http://localhost:8000</a>.
    </body>
</html>

我尝试创建另一个项目或清除缓存,但仍然是同样的问题。我真的被卡住了,我不知道该怎么办

【问题讨论】:

$request-&gt;validate返回html错误码 好的,非常感谢 【参考方案1】:

在 api 中最好使用此验证:

$validatedData = Validator::make($request->all(), [
           "departure" => "required",
           "destination" => "required",
           "capacity" => "required",
           "price" => "required"
     ]);
   if ($validatedData->fails()) 
         return $validatedData->failed();
   

在这种情况下,您可以发送任何您想要的响应,但是当您使用 $this-&gt;validate 时,它会在验证失败时手动将您重定向到其他地方

【讨论】:

以上是关于Laravel 8 api post route 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Route::get 在 Laravel 8 API 中返回空白

Laravel 5.4:API 路由列表

Laravel Cors 中间件不适用于 POST 请求

在 Laravel 5.3 中重定向路由

Laravel:Route::resource() GET & POST 工作,但 PUT & DELETE 抛出 MethodNotAllowedHttpException

API POST 请求在邮递员和 Laravel 上返回 404 NOT FOUND PAGE