52 \
Magento\Framework\Controller\Router\
Route\Factory $routeFactory
55 $this->_routeFactory = $routeFactory;
70 protected function _createRoute($routeData)
73 $route = $this->_routeFactory->createRoute(
75 $routeData[self::KEY_ROUTE_PATH]
78 $route->setServiceClass($routeData[self::KEY_CLASS])
79 ->setServiceMethod($routeData[self::KEY_METHOD])
80 ->setSecure($routeData[self::KEY_IS_SECURE])
81 ->setAclResources($routeData[self::KEY_ACL_RESOURCES])
82 ->setParameters($routeData[self::KEY_PARAMETERS]);
94 $baseUrlRegExp =
'#^/?\w+/\w+#';
95 $serviceBaseUrl = preg_match($baseUrlRegExp,
$request->getPathInfo(), $matches) ? $matches[0] :
null;
97 return $serviceBaseUrl;
109 $requestHttpMethod =
$request->getHttpMethod();
113 if (isset($servicesRoutes[
$request->getPathInfo()][$requestHttpMethod])) {
114 $methodInfo = $servicesRoutes[
$request->getPathInfo()][$requestHttpMethod];
115 $routes[] = $this->_createRoute(
117 self::KEY_ROUTE_PATH =>
$request->getPathInfo(),
128 ksort($servicesRoutes, SORT_STRING);
129 foreach ($servicesRoutes as
$url => $httpMethods) {
131 if (!$serviceBaseUrl || strpos(trim(
$url,
'/'), trim($serviceBaseUrl,
'/')) !== 0) {
135 foreach ($httpMethods as $httpMethod => $methodInfo) {
136 if (strtoupper($httpMethod) == strtoupper($requestHttpMethod)) {
138 $routes[] = $this->_createRoute(
140 self::KEY_ROUTE_PATH =>
$url,
144 self::KEY_ACL_RESOURCES => $aclResources,
const KEY_DATA_PARAMETERS
_getServiceBaseUrl($request)
__construct(ModelConfigInterface $config, \Magento\Framework\Controller\Router\Route\Factory $routeFactory)
getRestRoutes(\Magento\Framework\Webapi\Rest\Request $request)