Hi,
I’ve been reading Apigee learning material on API design and how to best use Apigee one book in particular - Web Design: The Missing Link talks about pragmatic REST, REST Model being resource driven, the data driven paradigm and it even gives advice on how to name paths. Generally, it drives home the point the best practice to design and call a REST API is to stick with verb+path concept where the path is a resource name eg:POST /dogs.
My question is ultimately Apigee is exposing an existing backend web service and not creating it’s own API/ws so you might inherit a “function-oriented” API by doing a WSDL import and that is no fault of yours, it’s just how the backend is designed. For example, Oracle has an OOTB SOAP WS to validate accounts and the way the current path is named /validateAndCreateAccounts doesn’t conform to what the book and Apigee preach because use Nouns and not Verbs in paths.
Current State of Apigee URL: https://{host-name}/basepath/validateAndCreateAccounts
Current State of API call: POST /basepath/validateAndCreateAccounts
So, if my understanding is correct, in order to bring this up to the pragmatic REST standard we will have to do something in Apigee..we will have to make some “X” change to the state of the API at the point of importing a WSDL in order to bring it up to standard. For example, instead of triggering that URL the
new URL would be: https://{host-name}/basepath/{noun-equivalent}
new API call: POST /basepath/{noun-equivalent}
Now, my question: Is doing this customizing the backend service? More generally, is this what the book is asking us to do and is it safe and “correct” to do this when Apigee’s role is to “expose” the service.
Not just this but the fact that I can take an existing SOAP webservice and expose it as a REST webservice does this implications of breaking changes with existing consumers of that backend..before Apigee came in play