Hell All,
I am a part of a large organization that is planning to come up with a new API layer that is quick, developer friendly, standards based and easy to work on.
We are considering two types of APIs,
1. External APIs:
There are a few hundred API endpoints that are used by tens of thousands of developers. We want them to REST (pragmatic), yet easily available kits or code snippets in different languages like Java, PHP, Python, Scala, NodeJS, ObjC.
2. Internal APIs:
These are also in few hundreds of endpoints, but are used by internal systems (Web Services to Data Store, communication between different services etc). These need to be robust, available in Java, PHP, Python and NodeJS.
I have came across Swagger aka OpenAPI recently and I wanted the group's opinions, thoughts on different approaches one can take.
From what I read, I feel that External APIs should be done in Swagger generating code snippets in different languages.
For internatl APIs, I feel that Thrift or Protobuff are a better option to consider.
Ideally, I would want all the APIs (internal and external) to be on the same/similar platform for lower maintenance. Is RESTifying Thrift and Protobuff possible? Or would you suggest Swagger for everything? (isn't efficiency a problem?).
As part of the API layer, we would want to build a facade, followed by mediators and proxies in between to support different data formats and protocols like SOAP.
Is this a good approach or do you guys suggest a different one?
Any brick bats, comments and suggestions are most welcome. Thank you in advance.
Regards,
Yaswanth