Live data from Hacker News

Using Pseudo-URIs with Microservices

philcalcado.com

21–22 of 22 posts

Re: Using Pseudo-URIs with Microservices

#21
post #20

Earlier quoted context omitted.

URN's[0] can support resource categorization so long as the Namespace Identifier (NID) does not collide with the reserved ones (and I'd throw in those which are well-known in the industry as well). So, for example, a URN which uses UUID's to satisfy uniqueness yet still allows for categorization could look like: urn:some-company:resource-type:abcdef012-3456-... For complete technical conformance, the "some-company" N…

Imo, this is a great combination of strategies when you want to keep people away from iterating. It also gives you the basis for a decent ACL system. Yeah, you use a few more bytes per item, but modern DBs can handle that. Probably worth having a autoincrementing ID on tables using uuids as well, though. Not 100% sure on that, but I've definitely hit batch jobs that need to run / frameworks that require autoincrement…

  Probably worth having a autoincrementing ID
  on tables using uuids as well, though.
Quite true, IMHO. I usually define both an auto-incrementing integral primary key (PK) as well as a unique string column for the URN. The PK is used for deletes/updates/joins/referential integrity and is never exposed beyond the server processes.

Re: Using Pseudo-URIs with Microservices

#22
post #11

Earlier quoted context omitted.

As mentioned in the article, they make it hard to identify the type of resource.

URN's[0] can support resource categorization so long as the Namespace Identifier (NID) does not collide with the reserved ones (and I'd throw in those which are well-known in the industry as well). So, for example, a URN which uses UUID's to satisfy uniqueness yet still allows for categorization could look like: urn:some-company:resource-type:abcdef012-3456-... For complete technical conformance, the "some-company" N…

How would one best use such URNs in a REST API?

An endpoint such as /products/:product-id:

Would be something like?

/products/some-company:products:abcdef012-3456...

Seems a little clunky

Post reply on HN