angularjs - 嵌套 REST 资源的 Angular ui-router 状态名称

标签 angularjs spring rest http

我目前正在设计一个新的 API 和一个使用该 API 的网络应用。

例如,假设我有以下 REST 资源:(使用 spring-boot 微服务):

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-router 中使用 angular,我想为尽可能接近 REST-API 的相应表单/ View 定义状态/URL。由于不可能对 GET、POST、PUT 使用相同的 URL,我想知道定义这些状态的标准(最佳实践)是什么。

几乎所有文本、教程等都对 CRUD 方法使用以下 URL/状态:

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

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

通常,我想要一个带有 Controller 的嵌套 View 来显示项目,以便项目是 orders.show 状态的子状态。

因此,如果我使用书籍/教程中建议的相同方案,将导致以下 url:

/#/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 和干净的应用程序结构有哪些建议?

最佳答案

我也在寻找类似问题的解决方案。到目前为止我得到的最好的是:

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

关于angularjs - 嵌套 REST 资源的 Angular ui-router 状态名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40884865/

相关文章:

javascript - AngularJS:OrderBy Descending(空条目)

javascript - ui-view 不加载模板

spring - 使用Querydsl仅选择Spring中的特定列?

java - 如何在 Spring Boot 中将 POST 请求从一个 Web 应用程序正确转发到另一个 Web 应用程序?

php - restful 是仅适用于 Web 服务还是同时适用于 Web 服务和网页?

javascript - 无法在 Angular js 中获得 promise

javascript - Bootstrap 轮播,每张幻灯片和 AngularJS 有多个元素

java - Spring 和 Jackson ObjectMapper 无法使用自定义过滤器

rest - 如何使用 Web 事件向 ADF v2 中的 REST API 发布请求

rest - 找不到 REST 资源时返回 404 是否正确?