This is going to be a bit long: I have problem in API management. We build apis in our company that are used by a lot of front channels line online Website, mobile app, call center , customer agent apps etc. Say we build an api A which is now used by all of the channels. Now mobile alone needs an enhancement of A that touches pretty much the entire stack ( service layer, data layer, configuration etc) This means we have to either 1)make the change to A and request all channels to regression test Or 2) somehow build a separate version of A say A2.0( still the data layer changes common are impactful across all versions ) and deploy I prod with a risk of negatively impacting other channels Is there a third option? Can we an release a A2.0 for mobile alone and not needing rest of the channels regression test? This should be a common problem in the industry- just trying to understand what patterns companies follow.
API gateways like Apigee, and Layer 7 take care of this easily. But just for versioning they may be overkill (fearure and price). You would handle this through virtual end points or via proxy APIs.
You should look into GraphQL https://dev-blog.apollodata.com/graphql-vs-rest-5d425123e34b
I agree ^
APIs should have versions. This way you can ensure no breaking changes in the same major version.