We're writing a series of RESTful services for our api. Well have /api/orders which is an endpoint for our orders system and /api/search for our search system.
In the past all of our services were SOAP services and we had methods that were called like verbs. So our orders system had addOrder(), getOrder(), addOrders(), getTracking(), etc..
So our new api will have /api/order/{id} and adds PUT and gets will be GET. We don't allow deleting or updating so we'll error handle for those and other HTTP verbs.
For my search we have getSearchResult() and we pass in a Criteria object with all of the criteria the user is searching with, and it can sometimes be a dozen properties they've set (from price, to price, images?, mark up, status, keyword, etc.). I know REST isn't a standard but if I want to stick w/ the architectural best practices I'm not sure exactly how I should be forming my endpoints.
/api/products/{searchCriteria} and we GET products fitting criteria
/api/search/{criteria} and we GET a "Search" or maybe
/api/searchResult/{Criteria}
I'm assuming the criteria is going to be a JSON string.
Also I need to do a lookup of the Manufacturer and who ships based on zip code user is in. I'm a little confused between
/api/product/{pID}/manufacturer/{zip}
/api/manufacturer/{product}/{zip}
/api/manufacturer/{criteria} with criteria being a JSON string
with product and criteria.
Being built in ASP.NET with Web API