gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:25:55 25 4
gpt4 key购买 nike

我目前正在设计一个新的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com