2016-11-30 92 views
1

我目前正在设计一个新的API和一个使用该API的webapp。嵌套的REST资源的角度ui路由器状态名称

例如,假设我有以下REST资源:(使用弹簧启动的microService):

GET /orders   // get all orders 
POST /orders   // create an order 
GET /orders/1   // get order with id 1 
PUT /orders/1   // update order with id 1 

GET /orders/1/items // get all order items 
POST /orders/1/items // create an order item 
GET /orders/1/items/2 // get the order item with id 2 of order with id 1 
PUT /orders/1/items/2 // update order item with id 2 of order with id 1 

我认为,这是一个很常见的用法。在我的应用程序中,资源更加嵌套。

我使用角与UI-路由器和我想定义的状态/网址为根据形式/视图,作为closly尽可能是到REST API。由于无法为GET,POST,PUT使用相同的URL,因此我想知道定义这些状态的标准(最佳实践)是什么。

几乎所有的文本,教程等使用以下网址/状态的CRUD方法:

/#/orders/    // state: orders 
/#/orders/create  // state: orders.create 
/#/orders/1/show  // state: orders.show 
/#/orders/1/edit  // state: orders.edit 

这是相当简单的。 但是没有人讨论如何设计嵌套资源。因此,如何处理嵌套的项目资源会很有趣?

通常情况下,我想有一个控制器,一个嵌套的视图来显示的项目,这样的项目是orders.show状态的子状态。

因此,如果我会用同样的方式作为书籍/教程建议,这将导致到以下网址:

/#/orders/1/show/items   // state: orders.show.items 
/#/orders/1/show/items/create // state: orders.show.items.create 
/#/orders/1/show/items/2/show // state: orders.show.items.show 
/#/orders/1/show/items/2/edit // state: orders.show.items.edit 

:这些URL某种程度上显示不正确。那么,什么经验和建议存在?或者有什么建议来获得一个干净的URL,因此一个干净的应用程序结构?

回答

0

此外我正在寻找类似问题的解决方案。该是我走到这一步,是最好的:

contacts (abstract, url: '/contacts') 
contacts.list (url: '/', resolve: { contacts }) 
contacts.new (url: '/new') 

contacts.one (abstract, url: '/contacts/:id', resolve: { contact }) 
contacts.one.show (url: '')       # => /contacts/1 
contacts.one.edit (url: '/edit')     # => /contacts/1/edit 
contacts.one.addresses (abstract, url: '/addresses') 
contacts.one.addresses.list (url: '', resolve: { user.addresses }) 
contacts.one.addresses.new (url: '/new')   # => /contacts/1/addresses/new 

contacts.one.addresses.one (abstract, url: '/:id', resolve: { address }) 
contacts.one.addresses.one.show (url: '')   # => /contacts/1/addresses/1 
contacts.one.addresses.one.edit (url: '/edit')  # => /contacts/1/addresses/1/edit