8-15节路由匹配这块,

来源:8-15 编写Theme详情接口

大王今天不巡山

2018-04-20

我定义了两条路由,路由完全匹配也开启了。

//theme
Route::get('api/:version/theme','api/:version.Theme/getThemeList');
//theme detaile
Route::get('api/:version/theme/[:id]','api/:version.Theme/getThemeDetaile');

如果我不传参数验证器给出的错误一直是第一个没传ids的错误。要完全避免这个问题还得把第二个路由改个名称。否则用户不传,系统无法正确的错误提示。改成如下路由就可以完全区别开用户究竟访问的是那个接口了!另外引申出一个问题,banner接口如果不给参数id加方括号,不传参数访问banner接口开启调试模式会报控制器不存在的错误。实际上控制器是有的。

//theme detaile
Route::get('api/:version/themep/[:id]','api/:version.Theme/getThemeDetaile');

写回答

3回答

7七月

2018-04-21

版本是多少?如果是很新的版本会有部分的差异

1
2
7七月
回复
大王今天不巡山
你需要看看 最新的这个版本的文档说明看看有没有改变。其实我觉得学习不应该用最新版本。TP几周就更新一个版本,根本跟不上她的版本更新速度。还是跟课程版本一样省心。本身新版本就没撒好东西。。。
2018-04-23
共2条回复

Stormer2018

2018-07-23

Route::get('api/:version/theme','api/:version.Theme/getThemeList'); 课程里的这个路由在我的TP里是无法接受IDs参数的。

写成这样就正常了:Route::get("api/theme/:IDs", "API/Theme/GetListByIDs"); ,定义接口地址的时候得加上参数。

TP5.0.20

0
1
大王今天不巡山
不定义也是可以的,你可以这么干。http://xxx.com/api/v1/theme?ids=a,b,c这样就可以传进去了。Route::get("api/theme/:IDs", "API/Theme/GetListByIDs")这种定义方式你必须http://xxx.com/api/v1/theme/a这种方式传值。前者在前端处理看起来比较优雅,类似这样把id穿传进去let parameters = { url: '/v1/product/detail', type: 'GET', data: { 'id': id } } return this.reqest(parameters)
2018-07-23
共1条回复

大王今天不巡山

提问者

2018-04-21

5.0.18我用的是这个版本。

0
0

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4805 学习 · 4382 问题

查看课程