Magento 2 API Info#

Service Contracts#

Service contracts - set of interfaces for modules to delcate stard API’s

  • Improve upgrade process
  • Formalise customisation
  • Decouple modules

Magento 2 implements “Development based on interface”, developer relies only on public methods declated in an interface

Modules communicate through the API

2 types: data API and operational API

Data API#

Provides access to a module’s entity data

Located: _MODULE_NAME_/Api/Data

Operational API#

Actual operations on data

Located: _MODULE_NAME_/Api

Magento 1 way#

Had to read core code first and then make changes

Magento 2 way#

Customise a module using an API interface that communicates with the model without interacting directly with the core

Pros:

  • Customise based on documentation, not module internals
  • Better decoupling
  • Minimisng conflicts
  • Ability to rely on interface not implmentation

Drawbacks:

  • More difficult to perform low-level customisation
  • Implementation method can sometimes matter
  • Can be difficult to debug
  • Changes must be compatible with interfaces

Services API#

API provides structured form of communication between modules

Describe the sturcutre of API components:

  • Repository - equivalent service-level collections (typically using getList())
  • Business API - actual business operations
  • Data API - May extend AbstractExtensibleObject (Does not extend of use any framework components)

These tasks use an API instead of a mageto 1 type object (collection):

  • Fetch a list of objects from a database
  • To save or delete an object

AbstractSimpleObject#

Base class for many DTO objects (Similar to Varien but does not have magic get and setters) Only _setData() and _get() If created with ObjectFactory the $data array will be passed as a constructor argument

Frameowrk API#

Repository and Business Logic API#

Repositories#

  • Provide access to the database through the services API
  • Unchanged with new releases
  • Deals with data objects
  • Provides high-level access to data
  • Supports searchCriteria mechanism for filtering and sorting
  • Does not provide low level access to the DB

The getList() method accepts a SearchCriteria instance

Magento 2 uses a number of smaller registries

If it does not exist in the registry then it is created with CustomerFactory

SearchCriteria#

Public methods available within the SearchCriteriaInterface

  • FilterGroups(filters)
  • SortOrders(Sorts)
  • PageSize(Limits)
  • CurrentPage(Offsets)

Data API#

Goals:

  • Simplify SOAP API
  • Provide service-level access to module’s data

Note: Cannot directly change interfaces. Instead change the interface’s implementation.

extension_attributes.xml

stock_item is an extension attribute. If you request a stock item from a product object you get an extension object.

Can join tables

Web API#

There is an area for each web api: webapi_rest and webapi_soap

webapi.xml file

ACL options: self (customer data), anonymous (anyone) and Magento acl

3 types of authentication:

  • OAuth (SOAP)
  • Token-based (REST)
  • Session based

SOAP OAuth#

Access token must be created

WSDL url is: host/soap?wsdl&services=ModuleInterfaceV1

or host/soap?wsdl&services=Module2InterfaceV1

eg. host/soap?wsdl&services=catalogProductRepositoryV1

REST web services#

Make a token request