Magento 2 एक सिर रहित समाधान के रूप में


48

मैं जानना चाहता हूं कि क्या एक प्रमुख ई-कॉमर्स समाधान के रूप में Magento 2 का उपयोग करने के लिए कुछ सर्वोत्तम अभ्यास हैं

2017 में एक विशिष्ट ई-कॉमर्स में एक ओमनी-चैनल समाधान है जिसमें शामिल है

  • ई-कॉमर्स
  • सीएमएस
  • बहु मंच
  • टियर सिस्टम इंटीग्रेशन (ERP, ...)

मैं जानना चाहता हूं कि इस तरह के समाधान के साथ मैगेंटो 2 एपीआई कैसे शामिल है।


मेरा दृष्टिकोण:

  • डेस्कटॉप / मोबाइल वेबएप और मोबाइल ऐप के लिए एक अलग फ्रंटेंड फ्रेमवर्क (जैसे कोणीय) का उपयोग करें

  • ई-कॉमर्स डेटा / एक्शन को पुनः प्राप्त या इंटरैक्ट करने के लिए केवल Magento 2 API का उपयोग करें

  • CMS डेटा को पुनः प्राप्त करने के लिए केवल CMS API का उपयोग करें।

प्रो: ओन्ली एपीआई, ओमेनिखेल

विपक्ष: प्रदर्शन / सुविधाओं / स्वरूपण के लिए सीमा


इस दृष्टिकोण के लिए कुछ प्रश्न:

  • डेटा को प्रारूपित करने के लिए कौन जिम्मेदार है, उदाहरण के लिए कीमतें। Magento एपीआई और सीमावर्ती ढांचा?
  • उत्पाद चित्रों का आकार बदलने और उन्हें कैश करने के लिए कौन जिम्मेदार है? क्योंकि देशी Magento 2 API में कोई आकार या कैश सिस्टम नहीं है।
  • क्या मुझे नए कस्टम पृथक एपीआई बनाने या भविष्य के उन्नयन के उद्देश्य के लिए देशी का विस्तार करने की आवश्यकता है?
  • क्या आप CMS और Magento API को संयोजित करने के लिए एक अतिरिक्त परत का उपयोग करने की सलाह देते हैं?

मैं अनुभव में अपनी वापसी को साझा करने के लिए आपकी सराहना करता हूं।

इसके अलावा, मुझे यह दृष्टिकोण मिला: http://fbrnc.net/blog/2015/10/super-scaling-magento

उपयोगी लिंक:

संपादित करें:

मुझे आपके Magento 2 API के लिए अपना कैश तर्क बनाने के लिए एक अच्छा बूटस्ट्रैप मिला: https://github.com/magespecialist/m2-MSP_APIEnhancer

EDIT: VueJS PWA के साथ हेडलेस ई-कॉमर्स के रूप में Magento 2 का उपयोग करने के लिए एक अच्छा ओपन सोर्स प्रोजेक्ट: https://github.com/Divante.in/vue-storefront

संपादित करें: प्रतिक्रिया के आधार पर आधिकारिक Magento 2 PWA उपकरण: https://github.com/magento-research/p-Incudio


: / मुझे यकीन नहीं है कि मुझे यह "सिर रहित" सनक पसंद है, मेरा मतलब है कि स्मार्ट देव वर्षों से इसकी आवश्यकता पड़ने पर कर रहे हैं, आप एक दृश्यपटल बनाते हैं और डेटा को हेरफेर करने के लिए डेटाबेस क्वेरी का उपयोग करते हैं, क्वेरी कैशिंग के साथ, डेटा संरचनाओं को याद करते हुए, और पूर्ण पृष्ठ आवश्यकतानुसार कैशिंग।
वोल्फ

हाँ, लेकिन आपको Magento 2 API जैसे इंटरफ़ेस की आवश्यकता है।
फ्रेंक गार्नियर

वास्तव में नहीं, सभी CRUD इंटरफेस sql प्रश्नों के लिए केवल अतिरिक्त अनावश्यक परतें हैं, उन इंटरफेस के लिए जो अधिक करते हैं, आप अक्सर बूटस्ट्रैप कर सकते हैं और जो आवश्यक है उसे करने के लिए मूल फ़ंक्शन / विधि कॉल करें। मैं सिर्फ इतना कह रहा हूं कि किसी चीज के लिए यह सिर्फ एक नया नाम है जो लंबे समय से मौजूद है। हम शायद सर्वसम्मति में नहीं आएंगे और यह संभवतः इसके लिए जगह नहीं है, इसलिए आपकी परियोजना के साथ शुभकामनाएं।
वोल्फ

मैंने कभी नहीं कहा कि यह दृष्टिकोण नया है। लेकिन अगर आप इसे डायरेक्ट क्वेरी के साथ Magento API लेयर के बिना भी कर सकते हैं, तो आप सभी रखरखाव लाभ खो देते हैं। जैसे डेटाबेस अमूर्त, पीछे की संगतता और इतने पर। आप Magento API से बच सकते हैं, लेकिन आपको अपनी स्वयं की परत जोड़ने की आवश्यकता है। धन्यवाद।
फ्रेंक गार्नियर

जवाबों:


38

सवालों के जवाब

डेटा को प्रारूपित करने के लिए कौन जिम्मेदार है, उदाहरण के लिए कीमतें। Magento एपीआई और सीमावर्ती ढांचा?

Magento API डेटा और व्यावसायिक तर्क तक पहुँच प्रदान करता है । फ़ॉर्मेटिंग डेटा / कीमतें प्रेजेंटेशन लॉजिक का हिस्सा होती हैं , इसलिए इस तरह से, आपके पास अपनी इच्छानुसार जानकारी प्रस्तुत करने के लिए अधिक लचीलापन होता है (इसे मैगेंटो तरीके से करने के लिए मजबूर किए बिना)।

उदाहरण के लिए, आप स्थानीय सेटिंग्स का पता लगाने और उचित डेटा प्रदान करने के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं। निम्नलिखित की जाँच करें: navigator.language toLocaleString ()

या, आप Magento से 3rd पार्टी सिस्टम या डेटा एनालिसिस टूल में कीमतें आयात करने का विकल्प भी चुन सकते हैं, और मुद्रा प्रारूप के अनुसार स्वरूपित कीमतें केवल "मुद्रा रूपांतरण" को हल करने तक आयात प्रक्रिया को तोड़ देगी।

उत्पाद चित्रों का आकार बदलने और उन्हें कैश करने के लिए कौन जिम्मेदार है? क्योंकि देशी Magento 2 API में कोई आकार या कैश सिस्टम नहीं है।

ठीक ठीक। जैसा कि मैंने ऊपर कहा, Magento डेटा तक पहुँच प्रदान करता है (प्रस्तुति तर्क के बिना)। यह आपके ऊपर है कि आप इसका उपयोग कैसे करेंगे।

उदाहरण के लिए, आप http://adaptive-images.com/details.htm के अनुकूली छवि का विकल्प चुन सकते हैं , इसलिए आप आसानी से मूल छवि का उपयोग कर सकते हैं और जो चाहें कर सकते हैं।

आप छवियों को कैश करने का तरीका चुन सकते हैं, क्या आप छवियों को कम करने के लिए हानिपूर्ण या दोषरहित संपीड़न का उपयोग करना चाहते हैं, आदि।

क्या मुझे नए कस्टम पृथक एपीआई बनाने या भविष्य के उन्नयन के उद्देश्य के लिए देशी का विस्तार करने की आवश्यकता है?

मैं आपको अपना एपीआई बनाने की सलाह देता हूं जिसका उपयोग प्रस्तुति तर्क के लिए किया जाएगा, और आप 99.9% (मेरे अनुमान) सुनिश्चित करेंगे कि आप Magento2 API के भविष्य के उन्नयन से प्रभावित नहीं होंगे।

क्या आप CMS और Magento API को संयोजित करने के लिए एक अतिरिक्त परत का उपयोग करने की सलाह देते हैं?

अत्यधिक सिफारिशित। लेकिन, अतिरिक्त परत के लिए एक अतिरिक्त अनुप्रयोग नहीं होना चाहिए; यह एक Magento2 मॉड्यूल भी हो सकता है। इसके बारे में अच्छी बात यह है कि आप इसे वैसे ही जोड़ना चाहते हैं, जब आप चाहें; आप किसी भी भाषा / तकनीक का उपयोग करके अपनी प्रॉक्सी परत का निर्माण कर सकते हैं।

मैं अनुभव में अपनी वापसी को साझा करने के लिए आपकी सराहना करता हूं।

कई दृष्टिकोण हैं जो आप यहां उपयोग कर सकते हैं। मैं इस पर अपनी राय साझा करूंगा

माई अप्रोच टू हेडलेस

पहले, मैं इसे दो परतों में विभाजित करूंगा: प्रॉक्सी परत और प्रस्तुति परत

प्रॉक्सी परत

पहली बात जिस पर आपको विचार करना होगा, वह प्रॉक्सी लेयर के निर्माण के बारे में है। पर्दे के पीछे, आप मैगेंटो एपीआई, सीएमएस एपीआई, ईआरपी एपीआई, एक्स एपीआई का उपयोग कर सकते हैं, जो भी आप चाहते हैं ...

प्रॉक्सी लेयर में, आप जिस तरह से चाहें, डेटा का उपयोग और व्यवस्थित करने के लिए स्वतंत्र हैं। आप कैशिंग परत को लागू कर सकते हैं, साथ ही साथ डेटा स्वरूपण, ग्राहक ट्रैकिंग, विभिन्न ऑटोमैटाइजेशन, आदि के लिए अतिरिक्त कार्यशीलता भी कर सकते हैं। सामान्य तौर पर, प्रस्तुति परत में आसान-बाजीगरी के लिए आपको कुछ भी चाहिए।

प्रॉक्सी परत को PHP में कोडित करने की आवश्यकता नहीं है; इसे Java, NodeJS में कोडित किया जा सकता है, या आप संपूर्ण प्रॉक्सी लेयर प्रदान करने के लिए AWS API गेटवे, AWS SQS और लैंबडा का भी उपयोग कर सकते हैं, या इसका केवल एक हिस्सा।

आपके द्वारा उपयोग किए जा सकने वाले दृष्टिकोणों में से एक का वर्णन Fabrizio Branca द्वारा http://fbrnc.net/blog/2015/10/super-scaling-magento पर किया गया है

प्रस्तुति अंश

प्रस्तुति परत क्लाइंट प्लेटफ़ॉर्म पर निर्भर करती है; यदि आप मोबाइल ऐप के लिए इसका उपयोग करने जा रहे हैं, तो चीजें इस बारे में बहुत स्पष्ट हैं कि आपको प्रॉक्सी एपीआई का उपयोग कैसे करना चाहिए।

एक वेब एप्लिकेशन के लिए, कई संभावनाएं हैं। आप उपयोग कर सकते हैं:

  • मानक PHP समाधान (किसी भी ढांचे द्वारा संचालित) जहाँ आप HTML उत्पादन प्रदान करने के लिए किसी भी PHP टेम्प्लेटिंग इंजन (जैसे कि स्मार्टी, ट्विग, ड्वो ...) का उपयोग कर सकते हैं।
  • Java / NodeJS / जिस भी भाषा से आप परिचित हैं
  • विशुद्ध रूप से जावास्क्रिप्ट आधारित समाधान, जो सभी HTML को रेंडर करेगा और डेटा के साथ इसे पॉप्युलेट करने के लिए ajax के माध्यम से उपयुक्त API को कॉल करेगा।
  • ऊपर से उन दृष्टिकोणों का कोई हाइब्रिड / संयोजन

यह पुस्तक सूची द्वारा नहीं है , मैंने अभी कुछ संयोजन साझा किए हैं। वास्तव में, आपकी कल्पना ही एकमात्र सीमा है।

अंतिम विचार

जितना हो सके जावास्क्रिप्ट आधारित समाधान का उपयोग करें, क्योंकि यह ग्राहक को बेहतर अनुभव प्रदान कर सकता है, पेज लोड के लिए छोटे पेलोड, आप सट्टा डेटा लोड भी कर सकते हैं यदि आप ग्राहक के अगले कार्यों की भविष्यवाणी कर सकते हैं।

लेकिन, विशुद्ध रूप से जावास्क्रिप्ट समाधान के साथ समस्या एसईओ है। यदि आपके सभी डेटा को अजाक्स के माध्यम से लोड किया जाता है, तो Google शायद इसे पार्स नहीं कर पाएगा।

समाधान एक हाइब्रिड ऐप बनाना है जो पहले लोड होने पर पूरे HTML पृष्ठ की सेवा करेगा, उदाहरण के लिए जब आप हिट / कैटलॉग / जूते। साइट के माध्यम से किसी भी अन्य नेविगेशन के लिए, आप केवल आवश्यक ब्लॉकों को लाने के लिए अजाक्स का उपयोग कर सकते हैं।

दृष्टिकोणों में से एक आपके पेज का स्नैपशॉट बना रहा होगा, उदाहरण के लिए PhantomJS का उपयोग करके । इसके लिए कुछ सशुल्क समाधान भी हैं, जैसे:


केवल देशी Magento 2 एपीआई का उपयोग करने का दोष कोड दोहराव के साथ प्रस्तुति परत के लिए उपयोगी अंतर्निहित सुविधा को खोना है। अपने वर्तमान प्रोजेक्ट के लिए मैंने कैशिंग और फॉर्मिंग लेयर के साथ मूल एक पर आधारित कस्टम Magento 2 API का उपयोग किया। इसलिए मुझे लगता है कि मैं आपके दृष्टिकोण का आंशिक रूप से पालन करता हूं।
फ्रेंक गार्नियर

सभी उपयोग के मामले पर निर्भर करता है। समय-समय पर बाजार के संदर्भ में, यह शायद 3 जी सीएमएस को एकीकृत करने के लिए तेजी से होता है, और अन्य सेवाओं के लिए कुछ प्रकार के एकीकरण क्लाउड का उपयोग करता है, जैसे कि Boomi ( boomi.com )।
सिनिसा नेडेलजकोविक

1
इसके अतिरिक्त, यहां तक ​​कि छिपकली और कद्दू को प्रॉक्सी परत का एक अच्छा उदाहरण माना जा सकता है, हालांकि मुझे यकीन नहीं है कि यह डिफ़ॉल्ट रूप से रेस्ट एपीआई का उपभोग करता है (लेकिन इसे आसानी से बढ़ाया जा सकता है)।
सिनिसा Nedeljkovic

10

मैं हेडलेस मैजेंटो परियोजनाओं के विकास की कुछ अंतर्दृष्टि साझा कर सकता हूं क्योंकि मेरी कंपनी ने उनमें से 2 का निर्माण किया है।

हमने एक दृश्यपटल अनुप्रयोग के रूप में अभिकर्मकों का उपयोग करने और इसे नोड संचालित बैकएंड के साथ जोड़ने का निर्णय लिया है। मैगेंटो के लिए एपीआई कॉल सर्वर साइड पर नोड द्वारा किया गया था। इसका मतलब था कि ब्राउज़र से मैजेंटो के लिए कोई कॉल नहीं भेजा गया था।

एपीआई के दृष्टिकोण से यह अच्छा है लेकिन कुछ समस्याएं हैं जो हम विकास के दौरान मिले हैं। Magento2 समापन बिंदु कभी-कभी बहुत सीमित होते हैं। डिफ़ॉल्ट समापन बिंदु हैंडलर प्रतिक्रिया के लिए अतिरिक्त डेटा इंजेक्ट करने की अनुमति नहीं देता है क्योंकि वे extension_attributesहर एक को प्रदान नहीं करते हैं । अलग से लिखे गए दृश्य के साथ यह एक अच्छी खबर नहीं है। हम कई बार कुछ डेटा जोड़ने की आवश्यकता का सामना कर रहे थे और देशी मैग्नेटो समापन बिंदु के अभाव में ऐसा नहीं कर सके extension_attributes। उन उदाहरणों की आवश्यकता है जो या तो Magento के समापन बिंदु को ओवरराइड करते हैं और अतिरिक्त फ़ील्ड्स के साथ अपना स्वयं का इंटरफ़ेस प्रदान करते हैं या हमारे कस्टम समापन बिंदु को Magento एक तक बढ़ाते हैं और जो हमें चाहिए उसे बदलते हैं।

उदाहरण के लिए हमें /rest/V1/categoriesडिफ़ॉल्ट रूप से मैगनेटो को ओवरराइड करने की आवश्यकता थी, श्रेणी के पेड़ में यूआरएल पथ को नहीं जोड़ा गया। /rest/V1/productsउत्पाद का डेटा भी हमारे लिए सीमित होना चाहिए क्योंकि हमें श्रेणी दृश्य के लिए इसका उपयोग करने की आवश्यकता थी और हम उस प्रतिक्रिया में उपलब्ध फ़िल्टर प्राप्त करना चाहते थे।

एक और समस्या एंडपॉइंट्स गायब थे। हमें संपर्क ईमेल भेजने के लिए लोगों को बनाना पड़ा, श्रेणी के लिए ब्रेडक्रंब, बोली से डेटा प्राप्त करना और परियोजना विशिष्ट तत्वों से निपटने के लिए कुछ अतिरिक्त। आम तौर पर बोल जहां सामान्य Magento2 सामने आप एक ब्लॉक बनाने के लिए कुछ कस्टम संग्रह से निपटने के लिए आप अपने एपीआई समापन बिंदु को जोड़ने की आवश्यकता हो सकती है।

सबसे ट्रिक वाला हिस्सा चेकआउट था। हालांकि यह बिना सिर के मोड के लिए तैयार किया गया है, फिर भी कुछ हिस्से हैं जिन्हें विशिष्ट समायोजन की आवश्यकता है। यदि आप paypal का उपयोग कर रहे हैं तो आम तौर पर आपको कुछ tokent के साथ भुगतान के लिए paypal साइट पर पुनर्निर्देशित किया जाएगा। हमारे लिए इस टोकन को अलग से लाने की आवश्यकता है क्योंकि हम मानक पुनर्निर्देशन का पालन नहीं करते हैं। इसी तरह का मामला अदन को जोड़ने के साथ था जिसे आदेश देने के बाद पुनर्निर्देशित करना आवश्यक था। स्टैंडर्ड मैगनेटो एंडपॉइंट केवल सफलता पर ऑर्डर आईडी देता है और रीडायरेक्ट यूआरएल को इंजेक्ट करने की अनुमति नहीं देता है। हमें 3DSecure को लागू करने में भी कुछ समस्याएँ थीं।

एक प्रमुख बात पर विचार करने और ग्राहक के लिए स्पष्ट होने से पहले यह सुनिश्चित करना है कि बाहरी मॉड्यूल के सभी फ्रंटएंड से संबंधित भागों को आपके विशिष्ट कार्यान्वयन के लिए फिर से लिखना होगा। जैसा कि वर्तमान में मॉड्यूल के लिए कोई डेटा नहीं है, यह किसी भी हेडलेस हिस्से में स्वयं का डेटा जोड़ने का कोई तरीका नहीं है। केवल एक चीज जो मॉड्यूल कर सकती है वह है एपीआई एंडपॉइंट्स।

सभी सभी हेडलेस मैजेंटो में निश्चित रूप से संभव है। हमने उन समायोजन और नए समापन बिंदुओं के लिए कस्टम मॉड्यूल होने को समाप्त कर दिया, जिनका उपयोग अन्य परियोजनाओं के साथ किया जा सकता है।

प्रतिक्रिया सामने बहुत अच्छी तरह से काम करती है क्योंकि प्रतिक्रिया सामने बहुत सारी चीजों को कैश कर सकती है और नोड बैकेंड बहुत तेज है। हम इस तरह से मानक Magento अनुरोध के भाग को देखने के लिए आवश्यक समय निकाल रहे हैं।

यदि आप यह जाँचना चाहते हैं कि यह यहाँ कैसे व्यवहार करता है, परियोजनाओं के लिंक हैं:

https://therake.com/

https://www.emperia.ch/

अगर कोई डच बोलता है तो इस लेख को भी देख सकता है: http://www.marketingfacts.nl/berichten/headless-magento-2-de-toekomst-van-e-commerce

[अपडेट करें]

चेकआउट फ्लो प्रश्न के बारे में अद्यतन। जैसा कि मैंने लिखा चेकआउट मुश्किल था। एपी स्तर पर भुगतान गेटवे मूल रूप से गैर-मौजूद हैं। उदाहरण के लिए, नियमित चेकआउट में अधिकांश भुगतान गेटवे आपको भुगतान पूरा करने के लिए अलग-अलग साइट पर पुनर्निर्देशित करते हैं। उन मॉड्यूलों में से कुछ लंबित स्थिति में मैगनेटो में ऑर्डर बना रहे हैं, कुछ (पेपाल एक्सप्रेस) ऑर्डर बनने से पहले पुनर्निर्देशित करते हैं। वे रीडायरेक्ट अक्सर रिटर्न के बाद विवरण प्राप्त करने के लिए आपके सत्र पर भरोसा करते हैं। यह एक समस्या थी क्योंकि प्लेसऑडर एपी एंडपॉइंट केवल नए बनाए गए ऑर्डर की आईडी लौटाता है न कि रीडायरेक्ट की जानकारी। चूंकि हम सीधे मैग्नेटो को नहीं मार रहे थे, लेकिन गेटवे से लौटने पर सत्र को वापस करने के लिए नोड को ठीक से बहाल करने की आवश्यकता होती है। हमारे मौजूदा प्रोजेक्ट्स में पेपाल और एडेन गेटवे इंटीग्रेटेड हैं और इसने हमें 150h पर ले लिया है।


महान स्पष्टीकरण, मैं इसी तरह की समस्याओं का सामना करता हूं। क्या आप अधिक भुगतान वाले हिस्से की व्याख्या कर सकते हैं, उदाहरण के लिए एक बिना सिर वाले Magento में पेपैल। क्या आप प्रवाह को साझा कर सकते हैं
फ्रेंक गर्नियर

5

यहाँ ओपन सोर्स प्रोजेक्ट है https://github.com/ishakhsuvarov/going-headless

यह रिपॉजिटरी "गोइंग हेडलेस" चर्चा के अनुसार बनाई गई है, जो कस्टम फ्रंटएंड के साथ मैगेंटो के वेब एपीआई के उपयोग के बारे में विचारों को इकट्ठा करने और चर्चा करने के लिए इमेजिन 2017 देवएक्सचेंज सत्र का एक हिस्सा था। इस परियोजना का मुख्य लक्ष्य वेब एपीआई प्रवाह और समाधान के विकास में सबसे महत्वपूर्ण और दर्दनाक बिंदुओं को इकट्ठा करना है, जो अधिकांश उपयोग के मामलों को संतुष्ट करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.