আমরা REST এপিআই সহ সার্ভার বিকাশ করছি, যা জেএসএন-এর সাথে গ্রহণ করে এবং প্রতিক্রিয়া জানায়। সমস্যাটি হ'ল যদি আপনার ক্লায়েন্ট থেকে সার্ভারে চিত্রগুলি আপলোড করা প্রয়োজন।
দ্রষ্টব্য: এবং আমি এমন একটি ব্যবহারের ক্ষেত্রে বলছি যেখানে সত্তা (ব্যবহারকারী) একাধিক ফাইল (কারফোটো, লাইসেন্সপোটো) থাকতে পারে এবং অন্যান্য বৈশিষ্ট্য (নাম, ইমেল ...) থাকতে পারে তবে আপনি যখন নতুন ব্যবহারকারী তৈরি করেন, আপনি ডন করেন না এই চিত্রগুলি প্রেরণ করবেন না, এগুলি নিবন্ধকরণ প্রক্রিয়া শেষে যুক্ত করা হবে।
সমাধানগুলি সম্পর্কে আমি সচেতন, তবে তাদের প্রত্যেকেরই কিছু ত্রুটি রয়েছে
1. জেএসএনের পরিবর্তে মাল্টিপার্ট / ফর্ম-ডেটা ব্যবহার করুন
ভাল : পোস্ট এবং পুট অনুরোধগুলি যথাসম্ভব বিশিষ্ট, তারা ফাইলের সাথে টেক্সট ইনপুটগুলি থাকতে পারে।
কনস : এটি আর জেএসএন নয়, যা পরীক্ষা করা, ডিবাগ ইত্যাদির তুলনায় অনেক বেশি সহজ মাল্টিপার্ট / ফর্ম-ডেটার সাথে তুলনা করে
২. পৃথক ফাইল আপডেট করার অনুমতি দিন
নতুন ব্যবহারকারী তৈরি করার জন্য পোষ্ট অনুরোধ চিত্রগুলি যুক্ত করতে দেয় না (যা আমাদের ব্যবহারের ক্ষেত্রে ঠিক আছে আমি কীভাবে শুরুতে বলেছিলাম), চিত্রগুলি আপলোড করা পুট অনুরোধ দ্বারা মাল্টিপার্ট / ফর্ম-ডেটা হিসাবে করা হয় উদাহরণস্বরূপ / ব্যবহারকারী / 4 / কারফোটো
ভাল : সবকিছু (ফাইল আপলোড নিজেই বাদে) JSON এ রয়ে গেছে, এটি পরীক্ষা করা এবং ডিবাগ করা সহজ (আপনি তাদের JSON অনুরোধগুলির দৈর্ঘ্য সম্পর্কে ভীত না হয়ে লগ করতে পারেন)
কনস : এটি স্বজ্ঞাত নয়, আপনি সত্তার সমস্ত ভেরিয়েবলগুলি একবারে পোস্ট বা পুট /users/4/carPhoto
করতে পারবেন না এবং এই ঠিকানাটিকে সংগ্রহ হিসাবে আরও বিবেচনা করা যেতে পারে (আরএসটি এপিআইয়ের জন্য স্ট্যান্ডার্ড ইউজ-কেসটি এর মতো দেখায় /users/4/shipments
)। সাধারণত আপনি সত্তার প্রতিটি ভেরিয়েবল GET / PUT করতে পারবেন না, উদাহরণস্বরূপ ব্যবহারকারী / 4 / নাম। আপনি জিইটি-র সাথে নাম পেতে পারেন এবং এটি ব্যবহারকারী / 4 এ PUT এর মাধ্যমে পরিবর্তন করতে পারেন। আইডির পরে যদি কিছু থাকে তবে এটি সাধারণত ব্যবহারকারী / 4 / পর্যালোচনার মতো অন্য সংগ্রহ
3. বেস 64 ব্যবহার করুন
এটি JSON হিসাবে প্রেরণ করুন তবে বেস 64 এর সাথে ফাইলগুলি এনকোড করুন।
ভাল : প্রথম সমাধান হিসাবে একই, এটি যতটা সম্ভব বিশ্রাম পরিষেবা।
কনস : আবারও, টেস্টিং এবং ডিবাগিং অনেক খারাপ (দেহে মেগাবাইটের ডেটা থাকতে পারে), সেখানে আকার এবং প্রসেসিংয়ের সময় উভয়ই বেড়েছে - ক্লায়েন্ট এবং সার্ভার
আমি সত্যিই নং নম্বর ব্যবহার করতে চাই। 2, তবে এর বিপরীতে রয়েছে ... যে কেউ আমাকে "সেরা কি" সমাধানের আরও ভাল অন্তর্দৃষ্টি দিতে পারেন?
আমার লক্ষ্যটি হ'ল যথাসম্ভব সহজ মানের অন্তর্ভুক্ত থাকা সহ রেস্ট্রিকুল সার্ভিসেস থাকা, যখন আমি এটি যথাসম্ভব সহজ রাখতে চাই।