标签:
前几天忙了,然后快两个星期没有发博客。今天正式回归。哈哈
1. 路由
说到路由当时学的时候给我疑惑了几天、。没有仔细看文档。然后一脸蒙蔽的去用 postman[谷歌插件] 测试路由方法。然后就很奇怪 composer 下载下来的 laravel 为什么在 postman 里面测试的只有 get 路由方法能使用,类似这样 :
laravel 的路由在app/Http/routes.php 这个文件(中文文档:点我)
在routes.php里面添加了一个get方法
1 Route::get(‘test‘,function(){ 2 return ‘123‘; 3 });
然后在postman里面测试的时候能输出 123;
然后我再次添加post方法。发现在postman里面测试的时候会报错。
1 Route::post(‘/test‘,function(){ 2 return 123; 3 });
后来加了laravel学院的群问了下才知道,(laravel 5.2.26之后的所有路由默认走web中间件,所以没有token肯定访问不了) 通俗的说就是防止CSRF(跨站)攻击。如果想要用postman测试的话就要去关闭CSRF。要么就用表单测试避免攻击。我就用官方文档给的表单测试这些路由...
1 Route::get(‘test‘,function(){ 2 $csrf_field = csrf_field(); 3 $html = <<<GET 4 <form method="POST" action="/test"> 5 {$csrf_field} 6 <input type="submit" value="test"/> 7 </form> 8 GET; 9 return $html; 10 }); 11 Route::post(‘test‘,function(){ 12 return ‘Success‘; 13 });
这个就能在浏览器中看到了(忽略 标签 ,懒得打马了)
metch / any 路由都差不多。然后其他的几个路由我也就不去测试了。表单传递方式只有get和post了。如果想看其他路由的话。目前只知道--- 去关闭csrf 用postman看效果。 如何关闭上面的 csrf 链接有介绍。或者 app/Http/Kernel.php 注释掉第31行
1 \App\Http\Middleware\VerifyCsrfToken::class, //注释我
1.1. 路由参数
1 Route::get(‘posts/{post}/comments/{comment}‘, function ($postId, $commentId) { 2 return $postId.$commentId; 3 });
可选参数:
1 Route::get(‘posts/{post}/comments/{comment?}‘, function ($postId, $commentId=null) { 2 return ‘$postId----‘.$postId.‘ $commentId------‘.$commentId; 3 });
这个意思差不多就是以postId 接收{post}参数。然后可选参数comment 可以为空或者不为空。然后输出对应的参数:下面这个例子就是把这个可选的参数没有给他设置值。然后输出的时候就不会有参数出来。若设置了即反之。{post}不能设置为可选参数,如果设置了的话,便报错、因为它真的不知道 comments 后面的是不是值。
正则约束参数:
1 Route::get(‘user/{id}/{name}‘, function ($id, $name) { 2 return $id.‘---‘.$name; 3 })->where([‘id‘ => ‘[0-9]+‘, ‘name‘ => ‘[a-z]+‘]);
这个输入的参数 id 必须为数字。name 必须为 a-z 或者多个 a-z+ --- 即正则约束这俩参数。
输出:
部分内容参考:Laravel 5.2 中文文档
标签:
原文地址:http://www.cnblogs.com/qiutianjia/p/5631720.html