Magento supports two types of APIs:
- Representational State Transfer (REST ): The endpoints for APIs depend on webapi.xml and the individual url arguments of each route element, as we will soon see. The authentication is carried over in a request's header via a Bearer token.
- Simple Object Access Protocol (SOAP) : The Web Services Description Language (WSDL) is available via a URL such as http://magelicious.loc/soap/default?wsdl&services=catalogProductRepositoryV1. Whereas the default string is optional, and it matches the code name of the Magento store in this case, if omitted, Magento will default to a default store, whatever its code might be. Likewise, the services parameter accepts one or more (comma-separated) lists of services. The full list of available services can be obtained via a URL such as http://magelicious.loc/soap/default?wsdl_list. Without going into the details of it, suffice it to say that Magento generates the service names automatically based on module and interface names. Much like with REST APIs, the authentication is carried over in a request's header via a Bearer token.
The great thing about these two is that we don't get to write two different APIs in Magento. The approach to writing APIs is unified, so to speak. We define some interfaces, classes, and configurations, and Magento then generates the API endpoints for both REST and SOAP on its own. Thus, the REST vs. SOAP choice really only becomes a question when we consume APIs, not while we write them.
Using SOAP services exceeds the scope of this book, which is why moving forward, all of our examples will use REST APIs.