Which one is most approporiate?
REST doesn't care what spelling you use for your resource identifiers, so long as they are compliant with RFC 3986. The machines don't care -- as far as they are concerned, the URI are just cache keys, nothing more than that.
See also: Stefan Tilkov REST: I Don't Think It Means What You Think It Does.
Spelling conventions for URI are useful for humans; they are much like variable naming conventions, where we value familiarity and consistency in a given context, without absolutes on right and wrong.
blogs/{blog-id}/posts/tags
blogs/{blog-id}/post/tags
It might be useful to review the singular vs plural arguments for database table naming.
blogs/{blog-id}/posts?field=tags
blogs/{blog-id}/post-tags
blogs/{blog-id}/posts/tags
A reason that you might prefer the latter form is relative resolution, in particular the fact that you can use dot segments to express one identifier in terms of another.
blogs/{blog-id}/posts/tags + ../images -> blogs/{blog-id}/posts/images
There's no particular reason that the tags
segment needs to be under posts
, or even under blogs
-- this spelling is also "fine", assuming that you don't run into problems with ambiguity:
/tags/{blog-id}