美文网首页
57. 路由 基本路由

57. 路由 基本路由

作者: 独步天堂 | 来源:发表于2017-10-06 15:55 被阅读14次
  • 简单优雅的定义路由的方法:
Route::get('foo', function () {
    return 'Hello World';
});
  • 所有的 Laravel 路由都在 routes 目录中的路由文件中定义,这些文件都由框架自动加载。

  • routes/web.php 文件用于定义 web 界面的路由。这里面的路由都会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。

  • 定义在 routes/api.php 中的路由都是无状态的,并且被分配了 api 中间件组。

  • 大多数的应用构建,都是以在 routes/web.php 文件定义路由开始的。

  • routes/api.php 文件中定义的路由通过 RouteServiceProvider 被嵌套到一个路由组里面。

  • 路由器允许你注册能响应任何 HTTP 请求的路由:

Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
  • GET 获取资源
  • POST 创建资源
  • PUT 编辑/更新资源(需提交完整的资源字段)
  • PATCH 编辑/更新资源(可以提交需要更新的字段)
  • DELETE 删除资源
  • OPTIONS 服务器允许哪些请求谓词

这些就是最近比较流行的RestFul模式常用的,另HTML表单只支持POST、GET两种请求方式,PUT、PATCH以及DELETE是Laravel中伪造的HTTP请求方式,需要在表单中添加<input type="hidden" name="_method" value="PUT(PATCH、DELETE)">才能生效,还要配置路由。

patch方法用来更新局部资源,这句话我们该如何理解?
.
假设我们有一个UserInfo,里面有userId, userName, userGender等10个字段。可你的编辑功能因为需求,在某个特别的页面里只能修改userName,这时候的更新怎么做?
.
人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端,做完整更新。但仔细想想,这种做法感觉有点二,而且真心浪费带宽(纯技术上讲,你不关心带宽那是你土豪)。
.
于是patch诞生,只传一个userName到指定资源去,表示该请求是一个局部更新,后端仅更新接收到的字段。
.
而put虽然也是更新资源,但要求前端提供的一定是一个完整的资源对象,理论上说,如果你用了put,但却没有提供完整的UserInfo,那么缺了的那些字段应该被清空。
.
补充:
.
最后再补充一句,restful只是标准,标准的意思是如果在大家都依此行事的话,沟通成本会很低,开发效率就高。但并非强制(也没人强制得了),所以你说在你的程序里把方法名从put改成patch没有任何影响,那是自然,因为你的后端程序并没有按照标准对两个方法做不同处理,她的表现自然是一样的。

  • 你可以使用 match 方法,也可以使用 any 方法注册一个实现响应所有 HTTP 请求的路由:
Route::match(['get', 'post'], '/', function () {
    //
});

Route::any('foo', function () {
    //
});
  • 指向 web 路由文件中定义的 POST、PUT 或 DELETE 路由的任何 HTML 表单都应该包含一个 CSRF 令牌字段,否则,这个请求将会被拒绝。
<form method="POST" action="/profile">
    {{ csrf_field() }}
    ...
</form>
  • 如果要定义重定向到另一个 URI 的路由,可以使用 Route::redirect 方法。

Route::redirect('/here', '/there', 301);

  • 如果你的路由只需要返回一个视图,可以使用 Route::view 方法。

    view 方法有三个参数,其中前两个是必填参数,分别是 URL 和视图名称。第三个参数选填,可以传入一个数组,数组中的数据会被传递给视图。

Route::view('/welcome', 'welcome');

Route::view('/welcome', 'welcome', ['name' => 'Taylor']);

相关文章

  • 57. 路由 基本路由

    简单优雅的定义路由的方法: 所有的 Laravel 路由都在 routes 目录中的路由文件中定义,这些文件都由框...

  • 八、Flutter路由

    目录一、基本路由二、基本路由传参三、命名路由四、命名路由传参五、替换路由六、返回到根路由 一、基本路由 跳转到De...

  • flutter 导航以及传参方式

    flutter 导航方式有基本路由和命名路由1、基本路由 ============================...

  • angualr(二) 路由之angualr-router

    创建项目 路由的基本使用 路由对象图示 路由基本配置 路由通配符配置 HTML里面跳转链接 在js里面跳转路由 路...

  • vue-router

    前端路由的基本原理 vue-router的基本使用 命名路由 路由参数 嵌套路由

  • larevel 路由索引

    基本路由:路由重定向、视图路由路由参数:必选、可选、正则表达式命名路由路由组:中间件、命名空间、子域名路由、路由前...

  • Laravel 路由、中间件及 CSRF

    前言 Laravel 路由、中间件及 CSRF。 路由 基本路由 资源路由 动词路径方法路由get/photosi...

  • Day13 - Flutter - 路由导航

    概述 路由管理 路由基本使用 命名路由使用(重点) 页面跳转的拓展 一、路由管理 1.1、认识Flutter路由路...

  • 28_rest-framework 路由控制

    rest-framework路由控制 一、基本路由: 最常用的路由写法 二、半自动路由 ViewSetMixin这...

  • vue - 路由模式

    1 路由的基本概念与原理 路由的本质就是对应关系; 在开发中, 路由分为前端路由和后端路由. 1.1 前端路由 概...

网友评论

      本文标题:57. 路由 基本路由

      本文链接:https://www.haomeiwen.com/subject/sccryxtx.html