当路由条目过多时,需要一条一条注册,过于麻烦,此时可以通过resource route简化
- map.connect("messages", "/messages",
- controller="messages", action="create",
- conditions=dict(method=["POST"]))
- map.connect("messages", "/messages",
- controller="messages", action="index",
- conditions=dict(method=["GET"]))
- map.connect("formatted_messages", "/messages.{format}",
- controller="messages", action="index",
- conditions=dict(method=["GET"]))
- map.connect("new_message", "/messages/new",
- controller="messages", action="new",
- conditions=dict(method=["GET"]))
- map.connect("formatted_new_message", "/messages/new.{format}",
- controller="messages", action="new",
- conditions=dict(method=["GET"]))
- map.connect("/messages/{id}",
- controller="messages", action="update",
- conditions=dict(method=["PUT"]))
- map.connect("/messages/{id}",
- controller="messages", action="delete",
- conditions=dict(method=["DELETE"]))
- map.connect("edit_message", "/messages/{id}/edit",
- controller="messages", action="edit",
- conditions=dict(method=["GET"]))
- map.connect("formatted_edit_message", "/messages/{id}.{format}/edit",
- controller="messages", action="edit",
- conditions=dict(method=["GET"]))
- map.connect("message", "/messages/{id}",
- controller="messages", action="show",
- conditions=dict(method=["GET"]))
- map.connect("formatted_message", "/messages/{id}.{format}",
- controller="messages", action="show",
- conditions=dict(method=["GET"]))
上述路由条目可以使用这一条语句代替。
- map.resource("message", "messages")
两个参数,一个指定单数,为member路由名字;一个指定复数,为collection路由名字。
函数原型:resource(member_name, collection_name, **kwargs)
- GET /messages => messages.index() => url("messages")
- POST /messages => messages.create() => url("messages")
- GET /messages/new => messages.new() => url("new_message")
- PUT /messages/1 => messages.update(id) => url("message", id=1)
- DELETE /messages/1 => messages.delete(id) => url("message", id=1)
- GET /messages/1 => messages.show(id) => url("message", id=1)
- GET /messages/1/edit => messages.edit(id) => url("edit_message", id=1)
这里有必要说一下member 路由与 collection路由。
上述的路由模型
- GET /messages => messages.index()
- POST /messages => messages.create()
- GET /messages/new => messages.new()
- PUT /messages/1 => messages.update(id)
- DELETE /messages/1 => messages.delete(id)
- GET /messages/1 => messages.show(id)
- GET /messages/1/edit => messages.edit(id)
1. 有的路由有id, 指向一个具体的对象
2. 有的路由没有id, 指向全体对象
3. 有的路由(index/create, show/update/delete)有相同的URL,但是HTTP method不同
4. 有的路由(show/edit)HTTP method和前缀相同,仅后缀不同
一个member路由指定具体实例,也就是说它们有id。而一个collection路由,
没有指定的实例,即没有给定id
综上:member路由操作一个单独的实例,而collection操作全体实例。
另一个函数collection也可以完成上述功能。
函数原型:collection(collection_name, resource_name, path_prefix=None, member_prefix='/{id}', controller=None, collection_actions=['index', 'create', 'new'],member_actions=['show', 'update', 'delete', 'edit'], member_options=None, **kwargs)
用法:
map.collection('entries', 'entry')
相关推荐
本文将深入探讨Laravel的路由系统,特别是`laravel-routes`这个主题,以及如何进行路由分组。 首先,我们来了解Laravel路由的基本概念。在Laravel中,路由定义在`routes/web.php`和`routes/api.php`两个文件中。...
- Laravel的路由文件通常位于`routes/web.php`或`routes/api.php`,通过`Route::resource`可以方便地定义资源路由,这会为指定的控制器生成CRUD相关的多个路由。 5. **工厂(Factory)** - 工厂是Laravel中用于...
`Laravel开发-routes-explorer`是一个工具,帮助开发者更有效地管理和探索应用中的路由设置。这个资源管理器能提供清晰的视图,展示所有已注册的路由,包括其相关的方法、URL、控制器动作以及中间件。 1. **Laravel...
routes // (缩写)相当于 routes: routes }); ``` 3. **挂载到 Vue 实例**:最后,将创建的路由实例挂载到 Vue 实例上: ```javascript var app = new Vue({ el: '#app', router, template: '<router-view>...
在`routes/web.php`或`routes/api.php`中添加如下代码: ``` Route::resource('posts', 'PostController'); ``` 这将自动为`PostController`中的每个方法设置路由。 二、RESTful API设计 1. REST...
标题中的"very useful resource"表明我们将讨论一些关于CakePHP的极具价值的资源和知识点。 1. **安装与设置**: CakePHP提供了清晰的安装指南,包括使用Composer(PHP的依赖管理工具)进行自动安装,或者手动下载...
在您的/start/routes.js : Route . get ( '/api/:resource' , async ( { Model } ) => { /** * `Model` is the Model class of the requested resource * It convert the `:resource` in url
aio-routes Aio-routes 是一个用于 Web 应用程序的 URL 路由库。 它不支持典型的基于模式或正则表达式的路由。 而是在解析 url 时遍历对象。 请参阅下面的示例,了解更多信息Aioroutes 不仅适用于 HTTP,还适用于...
它受Sako Hartounian的hapi-resource模块的启发 安装 $ npm install --save hapi-rest-routes 用法 考虑到您为博客帖子提供了一个具有index和show功能的静态资源控制器。 var PostController = { index: function...
import VueResource from 'vue-resource' import auth from './auth/auth' Vue.use(VueRouter) Vue.use(VueResource) //在启动APP时进行校验是否有token auth.checkAuth() const routes= [ { path:'/',redirect...
vuex-laravel-resource-api Vuex + Laravel REST Controller API的库 在Laravel使用REST Controller时,轻松请求Vuex api。 目录 安装 npm安装vuex-laravel-resource-api 如何使用? 首先,您需要在store vuex...
在 `routes/web.php` 或 `routes/api.php` 文件中,可以使用 `Route::resource()` 方法为资源控制器配置路由。例如,为 `PostController` 创建资源路由: ```php Route::resource('posts', 'PostController'); ``` ...
ember-routes-documenter 它能做什么 解析 ember 路线以使其易于记录。 创建此插件的目的是记录路线,您可以在正在记录的路线顶部的评论中添加有关路线的信息。 您可以使用@param 来记录特定参数。 下面是一个例子:...
routes = Routes () # Register a new route routes . add ( 'path/to/resource/{id}' , something = 'value' , anything = 'else' ) # Try to match a route routes . match ( 'path/to/resource/1234' ) > ({ '...
创建简单休息资源的示例from aiohttp import webfrom aiorestapi import RestView , routes@ routes . resource ( "/views" )class RestResource ( RestView ): # example call: GET to <server>/views?start=10 ...
resources.router.routes.resource.defaults.controller = resource resources.router.routes.resource.defaults.action = index resources.router.routes.resource.defaults.id = 0 resources.router.routes....
1. `src`目录:存放源代码,可能有`routes`子目录用于定义API路由,`controllers`用于业务逻辑处理,`models`用于数据模型定义。 2. `public`目录:可能包含静态资源,如CSS、JavaScript和图片。 3. `package.json`...
Asynchronous restful API 特色 ✓ 基于aiohttp的异步web后端,实现了路由层和视图层 ...@routes.resource("/views") class RestResource(RestView): # example call: GET to <server>/views?start=10 async
资源控制器(Resource Controller)是Laravel中实现这一模式的重要工具,它简化了对RESTful API的创建和管理。在本压缩包"Laravel开发-resourceful .zip"中,可能包含了关于如何使用Laravel的资源控制器及其相关功能的...