I'm in the process of outlining the intended business logic of a web service. At this point, I'm not too concerned with implementation details. On the contrary, I'm looking for ways to abstract them away in order to describe the business logic and data exposed by the web service in an implementation-agnostic manner.
I've read a little about the fundamental principles behind REST and GraphQL. RESTful services expose resources. GraphQL exposes data using Object Types.
These concepts share some core characteristics:
- they describe 'things' (entities) with attributes
- 'things' can be related to other 'things'
- 'things' support a uniform interface to interact with them: retrieval, insertion, mutation and deletion (at least to some degree; I'm not familiar with mutations in GraphQL)
I might be mixing up some terms, but am I overall correct in thinking both are conceptually equal or at least very similar?
Is the omission of implementation details from the documentation an adequate means of 'bridging the gap' between the two (and possible future variations)?
Are there standards for documenting the 'things' and the behaviour of their supported operations in an implementation agnostic manner?