`

Routes Resource

 
阅读更多

当路由条目过多时,需要一条一条注册,过于麻烦,此时可以通过resource route简化

 

[python] view plaincopyprint?
 
  1. map.connect("messages""/messages",  
  2.     controller="messages", action="create",  
  3.     conditions=dict(method=["POST"]))  
  4. map.connect("messages""/messages",  
  5.     controller="messages", action="index",  
  6.     conditions=dict(method=["GET"]))  
  7. map.connect("formatted_messages""/messages.{format}",  
  8.     controller="messages", action="index",  
  9.     conditions=dict(method=["GET"]))  
  10. map.connect("new_message""/messages/new",  
  11.     controller="messages", action="new",  
  12.     conditions=dict(method=["GET"]))  
  13. map.connect("formatted_new_message""/messages/new.{format}",  
  14.     controller="messages", action="new",  
  15.     conditions=dict(method=["GET"]))  
  16. map.connect("/messages/{id}",  
  17.     controller="messages", action="update",  
  18.     conditions=dict(method=["PUT"]))  
  19. map.connect("/messages/{id}",  
  20.     controller="messages", action="delete",  
  21.     conditions=dict(method=["DELETE"]))  
  22. map.connect("edit_message""/messages/{id}/edit",  
  23.     controller="messages", action="edit",  
  24.     conditions=dict(method=["GET"]))  
  25. map.connect("formatted_edit_message""/messages/{id}.{format}/edit",  
  26.     controller="messages", action="edit",  
  27.     conditions=dict(method=["GET"]))  
  28. map.connect("message""/messages/{id}",  
  29.     controller="messages", action="show",  
  30.     conditions=dict(method=["GET"]))  
  31. map.connect("formatted_message""/messages/{id}.{format}",  
  32.     controller="messages", action="show",  
  33.     conditions=dict(method=["GET"]))  


上述路由条目可以使用这一条语句代替。

 

 

[python] view plaincopyprint?
 
  1. map.resource("message""messages")   

两个参数,一个指定单数,为member路由名字;一个指定复数,为collection路由名字。

 

函数原型:resource(member_name, collection_name, **kwargs)

 

[plain] view plaincopyprint?
 
  1. GET    /messages        => messages.index()    => url("messages")  
  2. POST   /messages        => messages.create()   => url("messages")  
  3. GET    /messages/new    => messages.new()      => url("new_message")  
  4. PUT    /messages/1      => messages.update(id) => url("message", id=1)  
  5. DELETE /messages/1      => messages.delete(id) => url("message", id=1)  
  6. GET    /messages/1      => messages.show(id)   => url("message", id=1)  
  7. GET    /messages/1/edit => messages.edit(id)   => url("edit_message", id=1)  

 

 

这里有必要说一下member 路由与 collection路由。

上述的路由模型

 

[plain] view plaincopyprint?
 
  1. GET    /messages        => messages.index()     
  2. POST   /messages        => messages.create()    
  3. GET    /messages/new    => messages.new()       
  4. PUT    /messages/1      => messages.update(id)  
  5. DELETE /messages/1      => messages.delete(id)  
  6. GET    /messages/1      => messages.show(id)    
  7. 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`这个主题,以及如何进行路由分组。 首先,我们来了解Laravel路由的基本概念。在Laravel中,路由定义在`routes/web.php`和`routes/api.php`两个文件中。...

    Laravel开发-laravel-make-resource

    - Laravel的路由文件通常位于`routes/web.php`或`routes/api.php`,通过`Route::resource`可以方便地定义资源路由,这会为指定的控制器生成CRUD相关的多个路由。 5. **工厂(Factory)** - 工厂是Laravel中用于...

    Laravel开发-routes-explorer

    `Laravel开发-routes-explorer`是一个工具,帮助开发者更有效地管理和探索应用中的路由设置。这个资源管理器能提供清晰的视图,展示所有已注册的路由,包括其相关的方法、URL、控制器动作以及中间件。 1. **Laravel...

    ES5中实现路由vue-router,并用vue-resource请求数据

    routes // (缩写)相当于 routes: routes }); ``` 3. **挂载到 Vue 实例**:最后,将创建的路由实例挂载到 Vue 实例上: ```javascript var app = new Vue({ el: '#app', router, template: '<router-view>...

    Laravel开发-laravel-resource-flow

    在`routes/web.php`或`routes/api.php`中添加如下代码: ``` Route::resource('posts', 'PostController'); ``` 这将自动为`PostController`中的每个方法设置路由。 二、RESTful API设计 1. REST...

    cakephp very useful resource

    标题中的"very useful resource"表明我们将讨论一些关于CakePHP的极具价值的资源和知识点。 1. **安装与设置**: CakePHP提供了清晰的安装指南,包括使用Composer(PHP的依赖管理工具)进行自动安装,或者手动下载...

    adonis-resource-middleware:适用于AdonisJs的Restful资源中间件

    在您的/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:asyncio 的 URL 路由库

    aio-routes Aio-routes 是一个用于 Web 应用程序的 URL 路由库。 它不支持典型的基于模式或正则表达式的路由。 而是在解析 url 时遍历对象。 请参阅下面的示例,了解更多信息Aioroutes 不仅适用于 HTTP,还适用于...

    hapi-rest-routes:Hapi扩展以生成宁静的路线

    它受Sako Hartounian的hapi-resource模块的启发 安装 $ npm install --save hapi-rest-routes 用法 考虑到您为博客帖子提供了一个具有index和show功能的静态资源控制器。 var PostController = { index: function...

    vue-jwt-demo-master.zip

    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 API库

    vuex-laravel-resource-api Vuex + Laravel REST Controller API的库 在Laravel使用REST Controller时,轻松请求Vuex api。 目录 安装 npm安装vuex-laravel-resource-api 如何使用? 首先,您需要在store vuex...

    laravel-resource-include

    在 `routes/web.php` 或 `routes/api.php` 文件中,可以使用 `Route::resource()` 方法为资源控制器配置路由。例如,为 `PostController` 创建资源路由: ```php Route::resource('posts', 'PostController'); ``` ...

    ember-routes-documenter:解析 ember 路线以使其易于记录

    ember-routes-documenter 它能做什么 解析 ember 路线以使其易于记录。 创建此插件的目的是记录路线,您可以在正在记录的路线顶部的评论中添加有关路线的信息。 您可以使用@param 来记录特定参数。 下面是一个例子:...

    autoroutes:速度路线

    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' ) > ({ '...

    aiorestapi:aiohttp的快速休息资源

    创建简单休息资源的示例from aiohttp import webfrom aiorestapi import RestView , routes@ routes . resource ( "/views" )class RestResource ( RestView ): # example call: GET to <server>/views?start=10 ...

    restful-zend-framework-example:使用 Zend Framework 1.0 的示例 RESTful 应用程序

    resources.router.routes.resource.defaults.controller = resource resources.router.routes.resource.defaults.action = index resources.router.routes.resource.defaults.id = 0 resources.router.routes....

    simple-resource-service:资源服务器

    1. `src`目录:存放源代码,可能有`routes`子目录用于定义API路由,`controllers`用于业务逻辑处理,`models`用于数据模型定义。 2. `public`目录:可能包含静态资源,如CSS、JavaScript和图片。 3. `package.json`...

    asyncweb:基于aiohttp的web后端

    Asynchronous restful API 特色 ✓ 基于aiohttp的异步web后端,实现了路由层和视图层 ...@routes.resource("/views") class RestResource(RestView): # example call: GET to <server>/views?start=10 async

    Laravel开发-resourceful .zip

    资源控制器(Resource Controller)是Laravel中实现这一模式的重要工具,它简化了对RESTful API的创建和管理。在本压缩包"Laravel开发-resourceful .zip"中,可能包含了关于如何使用Laravel的资源控制器及其相关功能的...

Global site tag (gtag.js) - Google Analytics