/invoices/{invoice_id}/states
/states/{invoice_id}
Что касается REST, два разных идентификатора означают два разных ресурса.Это не означает, что сервер не может иметь два ресурса с синхронизированными представлениями, но это означает, что общие компоненты не будут знать, что эти два ресурса «действительно» одно и то же.
Это может иметь значениекогда вы имеете дело с аннулированием кэша .
Например:
# Assume: empty cache
onRead(/invoices/{invoice_id}/states)
# Not available locally therefore
GET /invoices/{invoice_id}/states
200 OK
# Representation from server is loaded into the cache
# Representation from server is returned to caller
onRead(/states/{invoice_id})
# Not available locally therefore
GET /states/{invoice_id}
200 OK
# Representation from server is loaded into the cache
# Representation from server is returned to caller
onRead(/invoices/{invoice_id}/states)
# valid representation available locally therefore
# Representation from cache is returned to caller
onRead(/states/{invoice_id})
# valid representation available locally therefore
# Representation from cache is returned to caller
onChange(/invoices/{invoice_id}/states)
# PUT, PATCH, DELETE would all be similar
POST /states/{invoice_id}
200 OK
# successful request, so cached copy is invalidated
onRead(/invoices/{invoice_id}/states)
# Not available locally therefore
GET /invoices/{invoice_id}/states
200 OK
# Representation from server is loaded into the cache
# Representation from server is returned to caller
onRead(/states/{invoice_id})
# valid representation available locally therefore
# Representation from cache is returned to caller
В итоге у /states/{invoice_id}
будет копия перед изменением,но /invoices/{invoice_id}/states
будет иметь копию после изменения.
Если это полезно, отлично!
Но я предполагаю, что чаще всего это создает проблемы, которые неоправданно трудно отследить.Я бы предпочел руководящие принципы разработки, когда все копии одного и того же документа доступны с использованием одного и того же идентификатора, за исключением случаев, когда существует очевидная бизнес-ценность.