رفع مشکل REST در Magento و تنظیمات اولیه آن

رفع مشکل REST در Magento و تنظیمات اولیه آنReviewed by Mehdi Mohammadnejad on Sep 13Rating: 5.0

REST در Magento بطور پیش فرض کار می کند اما در مواردی که تنظیمات را در apache server تغییر داده باشیم، امکان دارد در استفاده از REST دچار مشکلی همچون کار نکردن API URL های Magento شده باشیم. که در زیر به رفع مشکل و تنظیمات اولیه REST می پردازیم.

نکته قابل توجه این توضیحات در ubuntu و apache سازگار است برای استفاده در توزیع های دیگر لینوکس و وب سرور enginx باید معادل آنها را یافته و تغییرات را اعمال کنید.

ابتدا mod_rewrite برای وب سرور باید فعال باشد.

در فایل etc/apache2/apache2.conf کد زیر را بیابید :

و پارامتر None را به All تغییر دهید، در نهایت کد باید به شکل زیر باشد:

سپس در htaccess کد زیر را قرار می دهیم:

مسیر زیر رو در هاست خود امتحان کنید:

http://your_domain_name/api/rest/products

احتمالا با خطای Access denied مواجه شدید، خوب این خطا نشون دهنده درست بودن کاری که تا الان کردیم.

حالا باید داخل پنل ادمین مجنتو در مسیر زیر تنظیمات رو انجام دهیم:

system > web service > {rest گزینه های مربوط به}

به ترتیب گزینه های زیر را دنبال کنید:

> REST Roles

این بخش برای تعریف یک role (یا نقش) می باشد.

> REST Attribute

این بخش برای تعریف هر role (یا نقش) برای دسترسی به کدام attribute از هر قسمتی (مثلا catalog) را معین می ‌کند.

> REST OAuth Consumers

برای تعریف consumer (مصرف کننده rest) می باشد که یک key و یک secret تنظیم می کند و می توانید در اختیار کسی که میخواهد از api ها استفاده کند قرار دهید.

تنظیمات اولیه تا به اینجا درست شده و اما برای استفاده از api ها ، می توان به ۳ روش عمل کرد:

  1. کاربر از نوع admin باشد.
    • می توان برای انجام امور (read, write, delete, update) سمت پنل ادمین استفاده نمود.
  2. کاربر از نوع customer باشد.
    • می توان برای مشتریان سطح دسترسی به انجام برخی کارها را داد. (برای زمانی است که میخواهیم برای مشتریان خود web service ارائه دهیم)
  3. کاربر از نوع guest باشد.
    • بطور کلی دسترسی به دیتا (read only)  برای عموم آزاد می باشد.

که برای confirm اولیه می بایست به یکی از کاربران (با سطح دسترسی admin) نقشی از نقشهای rest را داده باشیم.

از مسیر زیر در پنل ادمین می توان این دسترسی را به کاربران ادمین داد:

کاربر را انتخاب کرده و یا ایجاد کنید سپس در قسمت REST Role نقش مورد نظر را انتخاب و save کنید.

rest-intro1

confirm اولیه:

با استفاده از کد ضمیمه شده (rest_admin.php)، می توان confirm  اولیه را بطور کامل انجام داد. مراحل به ترتیب زیر هستند:

  1. کد را با فرمت php در مسیری ذخیره کنید که بتوانید در مرورگر خود اجرا کنید. (مثلا: http://localhost/rest.php )
  2. حال با اجرای کد از شما درخواست می شود که به پنل ادمین magento وارد شوید. (با user ای که سطح دسترسی آن برای REST Role تعریف شده باشد)
  3. سپس پیغامی مبنی بر authorize و یا reject کردن نشان داده می شود که با کلیک بر روی دکمه authorize شما به صفحه ای هدایت می شوید که قبلا در کد ضمیمه شده تنظیم شده است.

اگر مراحل را با موفقیت گذرانده باشید به این معنی است که از این به بعد هر نرم افزاری که می خواهد از rest استفاده کند، با داشتن oauth_key و oauth_secret و Resources هایی که برای مجنتو تنظیم شده اند، می تواند درخواستهای لازم را از سایت بگیرد (البته درخواستهایی که در REST Role برای کاربر تنظیم شده اند).

کد ضمیمه rest_customer.php، نمونه کد به زبان php است برای نحوه استفاده از magento rest api.

 

REST Resources:

The Magento REST API allows you to manage customers, customer addresses, sales orders, inventory, and products. REST API is organized into the following categories:

Products
Retrieve the list of products, create, update, and delete a product.
Resource Structure: http://magentohost/api/rest/products

Product Categories
Retrieve the list of categories assigned to a product, assign, and unassign the category to/from the specific product.
Resource Structure: http://magentohost/api/rest/products/:productId/categories

Product Images
Retrieve the list of images assigned to a product, add, update, and remove an image to/from the specific product.
Resource Structure: http://magentohost/api/rest/products/:productId/images

Product Websites
Retrieve the list of websites assigned to a product, assign, and unassign a website to/from the specific product.
Resource Structure: http://magentohost/api/rest/products/:productId/websites

Customers
Retrieve the list of customers, create, delete a customer, and update the customer information.
Resource Structure: http://magentohost/api/rest/customers

Customer Addresses
Retrieve the list of customer addresses, create, update, and delete the customer address.
Resource Structure: http://magentohost/api/rest/customers/:customerId/addresses

Inventory
Retrieve the list of stock items and update required stock items.
Resource Structure: http://magentohost/api/rest/stockitems

Sales Orders
Retrieve the list of sales orders as well as the specific order information.
Resource Structure: http://magentohost/api/rest/orders

Order Items
Retrieve order items for the specific order.
Resource Structure: http://magentohost/api/rest/orders/:orderId/items

Order Addresses
Retrieve information on order billing and shipping addresses for the specific order.
Resource Structure: http://magentohost/api/rest/orders/:orderId/addresses

Order Comments
Retrieve order comments for the specific order
Resource Structure: http://magentohost/api/rest/orders/:orderId/comments

 

References:

RESTAPIIntroduction

oauth_authentication

Authentication-steps

Magento Rest -Sample Code

دانلود