首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel 8 PUT路由返回404

基础概念

Laravel 是一个流行的 PHP Web 应用框架,它提供了丰富的功能和工具来简化 Web 开发。路由(Route)是 Laravel 中的一个核心概念,用于将 URL 指向相应的控制器方法。PUT 路由用于处理 HTTP PUT 请求,通常用于更新资源。

相关优势

  1. 简洁的语法:Laravel 的路由定义非常简洁,易于理解和维护。
  2. RESTful 支持:Laravel 提供了对 RESTful API 的内置支持,使得构建 RESTful 应用更加容易。
  3. 中间件支持:可以在路由上应用中间件,用于处理请求验证、日志记录等。
  4. 路由缓存:可以缓存路由定义,提高应用的性能。

类型

Laravel 支持多种类型的路由,包括:

  • Route::get:处理 GET 请求。
  • Route::post:处理 POST 请求。
  • Route::put:处理 PUT 请求。
  • Route::delete:处理 DELETE 请求。
  • Route::patch:处理 PATCH 请求。

应用场景

PUT 路由通常用于更新资源,例如更新用户信息、更新文章内容等。

问题原因及解决方法

1. 路由定义错误

问题描述:PUT 路由返回 404 错误,可能是由于路由定义错误导致的。

解决方法: 确保在 routes/web.phproutes/api.php 文件中正确地定义了 PUT 路由。例如:

代码语言:txt
复制
Route::put('/users/{id}', [UserController::class, 'update']);

2. 表单方法伪造

问题描述:HTML 表单默认不支持 PUT 请求,可能会导致 PUT 路由无法被正确触发。

解决方法: 使用 Laravel 提供的 @method 指令来伪造 PUT 请求。例如:

代码语言:txt
复制
<form action="/users/1" method="POST">
    @csrf
    @method('PUT')
    <!-- 表单内容 -->
</form>

3. 路由缓存

问题描述:如果启用了路由缓存,可能会导致新定义的路由无法生效。

解决方法: 清除路由缓存。可以通过以下命令清除路由缓存:

代码语言:txt
复制
php artisan route:clear

4. 路由文件加载顺序

问题描述:如果 routes/web.phproutes/api.php 文件中有相同路径的路由定义,可能会导致路由冲突。

解决方法: 确保 routes/web.phproutes/api.php 文件中的路由定义没有冲突,并且 routes/web.php 中的路由优先级更高。

示例代码

以下是一个完整的示例,展示了如何在 Laravel 8 中定义和使用 PUT 路由:

代码语言:txt
复制
// routes/web.php
Route::put('/users/{id}', [UserController::class, 'update'])
    ->name('users.update')
    ->middleware('auth');
代码语言:txt
复制
// app/Http/Controllers/UserController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    public function update(Request $request, $id)
    {
        // 更新用户逻辑
        return response()->json(['message' => 'User updated successfully']);
    }
}

参考链接

希望这些信息能帮助你解决 Laravel 8 PUT 路由返回 404 的问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

浅谈Laravel POST,PUT,PATCH 路由的区别

经常会混淆HTTP的POST/PUT方法,因为这两个方法似乎都可以用来创建或更新一个资源。...方法用来创建一个URI已知的资源,或对已知资源进行完全替换,比如users/1, 因此PUT方法一般会用来更新一个已知资源,除非在创建前,你完全知道自己要创建的对象的URI。...PATCH方法是新引入的,是对PUT方法的补充,用来对已知资源进行局部更新 GET 获取资源 POST 创建资源 PUT 编辑/更新资源(需提交完整的资源字段) PATCH 编辑/更新资源(可以提交需要更新的字段...Laravel中伪造的HTTP请求方式,需要在表单中添加才能生效,还要配置路由。...以上这篇浅谈Laravel POST,PUT,PATCH 路由的区别就是小编分享给大家的全部内容了,希望能给大家一个参考。

1.7K41
  • 通过 Laravel 创建一个 Vue 单页面应用(五)

    在传统的网页应用中,我们会删除那条用户记录,然后重定向返回用户列表。 在我们的SPA单页应用中,我们也可以通过编程方式将用户导航到 /users 页面的方式来实现这一点: this....使用服务端的 Laravel 应用,我们可以很容易地从 ModelNotFoundException 渲染一个 404.blade.php 。不过SPA有些不同。...上述路由是有效的,所以我们需要我们的组件渲染 error 组件或者将用户重定向到一个专用的404路由。...我们将在 resources/assets/js/app.js 中Vue 路由的配置中添加一些新路由,这些路由提供一个专门的404视图和一个可以将所有无法匹配的路由重定向到404路由的万能路由: { path... 因为在后端的Laravel程序中存在一个万能路由, 这意味着前端也需要这么一个万能路由,当访问路径与已经定义的路由不匹配时以一个404页面作为响应。

    4.4K20

    Laravel API教程:如何构建和测试RESTful API

    这样,Laravel将Article在我们的方法中注入实例,如果没有找到,将自动返回404。...404: 未找到。当没有找到资源时,这将由Laravel自动返回。 500: 内部服务器错误。理想情况下,你不会明确地返回这个,但如果有意外的中断,这是你的用户将要收到的。 503: 暂停服务。...相当自我解释,还有一个不会被应用程序显式返回的代码。 发送正确的404响应 如果您尝试获取不存在的资源,则会抛出异常,您将收到整个堆栈跟踪,如下所示: ?..." } 如果您使用Laravel服务其他页面,则必须编辑代码以使用Accept header,否则常规请求中的404错误也将返回JSON。...Laravel随身携带身份验证,但我们仍然需要调整一下以返回我们想要的答复。 控制器利用RegistersUsers trait来实现注册。

    20.4K20

    Laravel系列3.2】路由:指哪儿打哪儿

    Route::put('/put/request', function(){ return 'put'; }); 如果你在 POST 的路由上,使用 GET 的方式来进行访问的话,就会触发异常信息...$name; })->where(['id'=>'[0-9]+', 'name'=>'[a-z]+']); // http://laravel8/get/request/1/a // http://laravel8.../get/request/1 // http://laravel8/get/request/1/1 404 在这个路由中,我们指定了两个参数,一个是 id 一个是 name ,当使用 /get/request...比如我们有一组链接,都归属于同一个资源下,比如下面这几个链接: http://laravel8/temp/ http://laravel8/temp/{id} http://laravel8/temp/...edit http://laravel8/temp/delete http://laravel8/temp/insert 就可以把这五个链接都放到 temp 这个资源路径下,一般这种类似的资源也会只使用一个控制器

    11.8K10

    Laravel 路由使用入门

    这就是一个最简单的 Laravel 路由定义,但是涵盖了一个 Web 框架的基本功能:处理请求,返回响应。...注:这里需要注意的是,我们并没有通过 echo 或 print 显示输出内容,而是通过 return 将其返回Laravel 会通过内置的响应栈和中间件对返回内容进行处理。...2、路由动作 你可能已经注意到我们在上面的路由定义中使用了 Route::get,这种语法的含义是只匹配 GET 请求路由,那如果提交的是 POST 请求,或者 PUT、DELETE 请求呢?...Laravel 框架也为我们提供了相应的路由定义方法: Route::post('/', function () {}); Route::put('/', function () {}); Route...$slug; })->where(['id' => '[0-9]+', 'slug' => '[A-Za-z]+']); 如果传入的路由参数与指定正则不匹配,则会返回 404 页面: ?

    2.6K50

    最为常用的Laravel操作(2)-路由

    基本路由// 接收一个 URI 和一个闭包Route::get('hello', function () { return 'Hello, Laravel';});// 支持的路由方法Route:...:get($uri, $callback);Route::post($uri, $callback);Route::put($uri, $callback);Route::patch($uri, $callback...如果数据库中找不到对应的模型实例, 会自动生成 HTTP 404 响应Route::get('api/users/{user}', function (App\User $user) { return...(App\User $user) { //});如果请求 URL 是 profile/1, 就会注入一个用户 ID 为 1 的 User 实例, 如果匹配的模型实例在数据库不存在, 会自动生成并返回...HTTP 404 响应.自定义解析逻辑如果你想要使用自定义的解析逻辑, 需要使用 Route::bind 方法, 传递到 bind 方法的闭包会获取到 URI 请求参数中的值, 并且返回你想要在该路由中注入的类实例

    18810

    laravel的那些坑

    } "~5.0.0" --prefer-dist 安装完成后发现首页也能跑了,但是其它路由都是404错误 发现原来需要给ngix配置增加一句话,其实英文文档下面就提到了,只是当时没仔细看文档。...Try this instead: 发现在laravel中写一个带参数的路由 但希望把逻辑代码都写道对应的controller里是一件很难的事情,但有个技巧 你可以直接在代码区域new一个controller...返回这个controller的方法,就可以参数传入了 Route::get('{model}/lists', function ($model) { $className = 'App\Http...Controller'; $obj = new $className; return $obj->lists(); }); 后来发现其实不用这么做 laravel自带的restful方式,轻松创建带参数的路由...resource.store GET /resource/{resource} show resource.show GET /resource/{resource}/edit edit resource.edit PUT

    1.8K20

    通过 Laravel 创建一个 Vue 单页面应用(一)

    一个以 Laravel 为后端的 Vue SPA 应用的基本运行流程如下: 第一个请求触发服务端的 Laravel 路由 Laravel 渲染 SPA 布局 接下来的请求使用 history.pushState...举个例子, 如果用户在浏览器中刷新了 /hello 这个路由,我们 (Laravel) 需要匹配到它并返回对应的 Vue 模板。Vue Router 将会识别该路由并渲染对应的 Vue 页面组件。...如果我们不这样做, 当用户发送了一个 /hello 请求时, Laravel返回 404 响应....DOCTYPE html> <meta name="viewport" content="width...但这个应用仍有很多功能需要我们在后续的教程中来实现: 在前端定义一个 <em>404</em> <em>路由</em> 使用<em>路由</em>参数 子<em>路由</em> 在组件中向 <em>Laravel</em> 发起一个 API 请求 可能还有很多,但我不准备全部列在这里...

    4.3K20

    Laravel 表单方法伪造与 CSRF 攻击防护

    GET:请求指定的页面信息,并返回响应实体。一般来说 GET 方法应该只用于数据的读取,而不应当用于会产生副作用的非幂等的操作中。...Laravel 中的 HTTP 请求方式 Laravel 路由支持通过上面的大部分常用请求方式: /** * Laravel 路由支持的 HTTP 请求方式 * * @var array */...Laravel 在处理提交表单请求时,会将字段值作为请求方式匹配对应的路由。...不得不说,Laravel 5.7 引入的错误提示页面虽然好看,但是错误提示信息太少,这其实是因为默认情况下,为了安全考虑,Laravel 期望所有路由都是「只读」操作的(对应请求方式是 GET、HEAD...注:跨站请求伪造是一种通过伪装授权用户的请求来攻击授信网站的恶意漏洞,关于跨站请求伪造攻击可以参考维基百科了解明细:https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%

    8.7K40

    使用 Laravel 5.5+ 更好的来实现 404 响应

    Laravel 5.5.10 封装了两个有用的路由器方法,可以帮助我们为用户提供更好的 404 页面。...现在,当抛出 404 异常时,Laravel 会显示一个漂亮的 404.blade.php 视图文件,你可以自定义显示给用户 UI,但在该视图中,你无权访问 session,cookie,身份验证(auth...在 laravel 5.5.10 中,我们有一个新的 Route::fallback() 方法,用于定义当没有其他路由与请求匹配时 Laravel 回退的路由。... @stop 当 Laravel 渲染这个回退(fallback)路由时,会运行所有的中间件,因此当你在 web.php 路由文件中定义了回退路由时,所有处在 web 中间件组的中间件都会被执行...'; })->name('serverFallback'); 原文 Better 404 responses using Laravel 5.5+

    2.2K20

    通过 Laravel 创建一个 Vue 单页面应用(六)

    提醒一下,本教程并不关注权限;我们使用内置的 Laravel users 表演示如何在 Vue 路由器项目的上下文中使用 CURD。...以下是迄今为止的系列概要: 第1部分 – 设置项目和 Vue 路由器 第2部分 – 在 Vue 路由器中加载异步数据 第3部分 – 在 Laravel 中创建真实的用户端 第4部分 – 编辑用户 第5部分...', name: '404', component: NotFound }, { path: '*', redirect: '/404' }, ], }); 接下来,我们将链接添加到...添加 API 接口 我们准备在 Laravel 中添加 API 接口以创建新用户。这将类似于编辑现有用户。但是,此响应将返回 201 Created 状态代码。...原文地址:https://laravel-news.com/building-a-vue-spa-with-laravel-part-6 译文地址:https://learnku.com/laravel

    3.8K20
    领券