我目前正在设计新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尽可能地关闭相应表单/视图定义状态/ URL。由于无法对GET,POST,PUT使用相同的URL,因此我想知道定义这些状态的标准(最佳实践)是什么。
几乎所有文本,教程等都使用以下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,从而获得一个干净的应用程序结构?
答案 0 :(得分: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