REST API - ফাইল (অর্থাত্ চিত্র) প্রক্রিয়াকরণ - সেরা অনুশীলন


195

আমরা REST এপিআই সহ সার্ভার বিকাশ করছি, যা জেএসএন-এর সাথে গ্রহণ করে এবং প্রতিক্রিয়া জানায়। সমস্যাটি হ'ল যদি আপনার ক্লায়েন্ট থেকে সার্ভারে চিত্রগুলি আপলোড করা প্রয়োজন।

দ্রষ্টব্য: এবং আমি এমন একটি ব্যবহারের ক্ষেত্রে বলছি যেখানে সত্তা (ব্যবহারকারী) একাধিক ফাইল (কারফোটো, লাইসেন্সপোটো) থাকতে পারে এবং অন্যান্য বৈশিষ্ট্য (নাম, ইমেল ...) থাকতে পারে তবে আপনি যখন নতুন ব্যবহারকারী তৈরি করেন, আপনি ডন করেন না এই চিত্রগুলি প্রেরণ করবেন না, এগুলি নিবন্ধকরণ প্রক্রিয়া শেষে যুক্ত করা হবে।


সমাধানগুলি সম্পর্কে আমি সচেতন, তবে তাদের প্রত্যেকেরই কিছু ত্রুটি রয়েছে

1. জেএসএনের পরিবর্তে মাল্টিপার্ট / ফর্ম-ডেটা ব্যবহার করুন

ভাল : পোস্ট এবং পুট অনুরোধগুলি যথাসম্ভব বিশিষ্ট, তারা ফাইলের সাথে টেক্সট ইনপুটগুলি থাকতে পারে।

কনস : এটি আর জেএসএন নয়, যা পরীক্ষা করা, ডিবাগ ইত্যাদির তুলনায় অনেক বেশি সহজ মাল্টিপার্ট / ফর্ম-ডেটার সাথে তুলনা করে

২. পৃথক ফাইল আপডেট করার অনুমতি দিন

নতুন ব্যবহারকারী তৈরি করার জন্য পোষ্ট অনুরোধ চিত্রগুলি যুক্ত করতে দেয় না (যা আমাদের ব্যবহারের ক্ষেত্রে ঠিক আছে আমি কীভাবে শুরুতে বলেছিলাম), চিত্রগুলি আপলোড করা পুট অনুরোধ দ্বারা মাল্টিপার্ট / ফর্ম-ডেটা হিসাবে করা হয় উদাহরণস্বরূপ / ব্যবহারকারী / 4 / কারফোটো

ভাল : সবকিছু (ফাইল আপলোড নিজেই বাদে) JSON এ রয়ে গেছে, এটি পরীক্ষা করা এবং ডিবাগ করা সহজ (আপনি তাদের JSON অনুরোধগুলির দৈর্ঘ্য সম্পর্কে ভীত না হয়ে লগ করতে পারেন)

কনস : এটি স্বজ্ঞাত নয়, আপনি সত্তার সমস্ত ভেরিয়েবলগুলি একবারে পোস্ট বা পুট /users/4/carPhotoকরতে পারবেন না এবং এই ঠিকানাটিকে সংগ্রহ হিসাবে আরও বিবেচনা করা যেতে পারে (আরএসটি এপিআইয়ের জন্য স্ট্যান্ডার্ড ইউজ-কেসটি এর মতো দেখায় /users/4/shipments)। সাধারণত আপনি সত্তার প্রতিটি ভেরিয়েবল GET / PUT করতে পারবেন না, উদাহরণস্বরূপ ব্যবহারকারী / 4 / নাম। আপনি জিইটি-র সাথে নাম পেতে পারেন এবং এটি ব্যবহারকারী / 4 এ PUT এর মাধ্যমে পরিবর্তন করতে পারেন। আইডির পরে যদি কিছু থাকে তবে এটি সাধারণত ব্যবহারকারী / 4 / পর্যালোচনার মতো অন্য সংগ্রহ

3. বেস 64 ব্যবহার করুন

এটি JSON হিসাবে প্রেরণ করুন তবে বেস 64 এর সাথে ফাইলগুলি এনকোড করুন।

ভাল : প্রথম সমাধান হিসাবে একই, এটি যতটা সম্ভব বিশ্রাম পরিষেবা।

কনস : আবারও, টেস্টিং এবং ডিবাগিং অনেক খারাপ (দেহে মেগাবাইটের ডেটা থাকতে পারে), সেখানে আকার এবং প্রসেসিংয়ের সময় উভয়ই বেড়েছে - ক্লায়েন্ট এবং সার্ভার


আমি সত্যিই নং নম্বর ব্যবহার করতে চাই। 2, তবে এর বিপরীতে রয়েছে ... যে কেউ আমাকে "সেরা কি" সমাধানের আরও ভাল অন্তর্দৃষ্টি দিতে পারেন?

আমার লক্ষ্যটি হ'ল যথাসম্ভব সহজ মানের অন্তর্ভুক্ত থাকা সহ রেস্ট্রিকুল সার্ভিসেস থাকা, যখন আমি এটি যথাসম্ভব সহজ রাখতে চাই।


আপনি এটি দরকারী খুঁজে পেতে পারেন: stackoverflow.com/questions/4083702/…
মার্কন

5
আমি জানি এই বিষয়টি পুরানো তবে আমরা সম্প্রতি এই সমস্যার মুখোমুখি হয়েছি। আমরা যে সর্বোত্তম পন্থা পেয়েছি তা হ'ল আপনার নম্বর 2 এর মতো We আমরা সরাসরি এপিআইতে ফাইলগুলি আপলোড করি এবং তারপরে মডেলগুলিতে এই ফাইলগুলি সংযুক্ত করি। এই দৃশ্যের সাহায্যে আপনি ফর্মের মতো একই পৃষ্ঠায় আগে বা পরে একইভাবে আপলোড চিত্র তৈরি করতে পারেন, আসলেই কিছু আসে যায় না। ভাল আলোচনা!
টিয়াগো মাতোস

2
@ টিয়াগোমাতোস - হ্যাঁ, ঠিক আমি এটি একটি উত্তর দিয়ে বর্ণনা করেছি যা আমি সম্প্রতি গ্রহণ করেছি
লাইবিক

6
এই প্রশ্ন জিজ্ঞাসা করার জন্য ধন্যবাদ।
জুহায়ের তাহির

1
"এছাড়াও এই ঠিকানা / ব্যবহারকারী / 4 / কারফোটোটিকে সংগ্রহ হিসাবে আরও বিবেচনা করা যেতে পারে" - না এটি কোনও সংগ্রহের মতো দেখায় না এবং এটি অগত্যা এক হিসাবে বিবেচিত হবে না। কোনও সংস্থান নয় তবে একক সংস্থান নয় এমন কোনও সংস্থার সাথে সম্পর্ক স্থাপন করা সম্পূর্ণ জরিমানা।
বি

উত্তর:


154

এখানে ওপি (আমি দু'বছর পরে এই প্রশ্নের উত্তর দিচ্ছি, ড্যানিয়েল সেরেসিডো দ্বারা পোস্ট করা এক সময় খারাপ ছিল না, তবে ওয়েব পরিষেবাদিগুলি খুব দ্রুত বিকাশ করছে)

তিন বছরের পূর্ণ-সময় সফ্টওয়্যার বিকাশের পরে (সফ্টওয়্যার আর্কিটেকচার, প্রকল্প পরিচালনা এবং মাইক্রোসার্চিস আর্কিটেকচারের উপরও ফোকাস দিয়ে) আমি অবশ্যই দ্বিতীয়টি (তবে একটি সাধারণ শেষ পয়েন্ট সহ) সেরা হিসাবে বেছে নিই।

আপনার যদি চিত্রগুলির জন্য একটি বিশেষ এন্ডপয়েন্ট থাকে তবে এটি আপনাকে সেই চিত্রগুলি পরিচালনা করার জন্য আরও অনেক বেশি শক্তি দেয়।

মোবাইল অ্যাপস (আইওএস / অ্যান্ড্রয়েড) এবং ফ্রন্টএন্ড (প্রতিক্রিয়া ব্যবহার করে) উভয়ের জন্য আমাদের কাছে একই REST এপিআই (নোড.জেএস) রয়েছে। এটি 2017, সুতরাং আপনি স্থানীয়ভাবে চিত্রগুলি সঞ্চয় করতে চান না, আপনি এগুলি কিছু ক্লাউড স্টোরেজে (গুগল ক্লাউড, এস 3, ক্লাউডাইনারি, ...) এ আপলোড করতে চান, তাই আপনি তাদের উপর কিছু সাধারণ পরিচালনা করতে চান।

আমাদের সাধারণ প্রবাহটি হ'ল, আপনি কোনও চিত্র নির্বাচন করার সাথে সাথে এটি ব্যাকগ্রাউন্ডে আপলোড করা শুরু করে (সাধারণত পোস্টগুলি / ইমেজগুলি শেষ পয়েন্টে) আপলোড করার পরে আপনাকে আইডি ফিরিয়ে দেয়। এটি সত্যই ব্যবহারকারী-বান্ধব, কারণ ব্যবহারকারী কোনও চিত্র চয়ন করেন এবং তারপরে সাধারণত কিছু অন্যান্য ক্ষেত্র (যেমন ঠিকানা, নাম, ...) নিয়ে এগিয়ে যান, সুতরাং যখন তিনি "প্রেরণ" বোতামটি হিট করেন তখন চিত্রটি ইতিমধ্যে ইতিমধ্যে আপলোড হয়। তিনি অপেক্ষা করছেন না এবং "আপলোড ..." বলে স্ক্রিনটি দেখছেন না।

চিত্র পেতে একই হয়। বিশেষত মোবাইল ফোন এবং সীমিত মোবাইল ডেটার জন্য ধন্যবাদ, আপনি আসল চিত্রগুলি প্রেরণ করতে চান না, আপনি পুনরায় আকারিত চিত্রগুলি প্রেরণ করতে চান, যাতে তারা এত বেশি ব্যান্ডউইদথ নেয় না (এবং আপনার মোবাইল অ্যাপ্লিকেশনগুলি দ্রুততর করতে, আপনি প্রায়শই চান না একেবারে আকার পরিবর্তন করতে, আপনি এমন চিত্রটি চান যা আপনার দৃষ্টিতে পুরোপুরি ফিট করে)। এই কারণে, ভাল অ্যাপ্লিকেশনগুলি ক্লাউডিনারি জাতীয় কিছু ব্যবহার করছে (বা পুনরায় আকার দেওয়ার জন্য আমাদের নিজস্ব ইমেজ সার্ভার রয়েছে)।

এছাড়াও, যদি ডেটাটি ব্যক্তিগত না হয়, তবে আপনি কেবল অ্যাপলিকেশন / ফ্রন্টএন্ডে কেবল ইউআরএল প্রেরণ করুন এবং এটি ক্লাউড স্টোরেজ থেকে সরাসরি ডাউনলোড করে যা আপনার সার্ভারের ব্যান্ডউইথ এবং প্রসেসিং টাইমের বিশাল সঞ্চয়। আমাদের বড় অ্যাপ্লিকেশনগুলিতে প্রতি মাসে প্রচুর টেরাবাইট ডাউনলোড হয়, আপনি CRUD ক্রিয়াকলাপের উপর নির্ভরশীল আপনার প্রতিটি REST এপিআই সার্ভারে সরাসরি এটি পরিচালনা করতে চান না। আপনি এটি এক জায়গায় হ্যান্ডেল করতে চান (আমাদের ইমেজসার্ভার, যার ক্যাশিং রয়েছে ইত্যাদি) বা ক্লাউড পরিষেবাদিগুলিকে এগুলি সমস্ত পরিচালনা করতে দিন।


কনস: আপনার মনে করা উচিত কেবলমাত্র "কনস" হ'ল "অর্পিত চিত্রগুলি নয়"। ব্যবহারকারী চিত্র নির্বাচন করুন এবং অন্যান্য ক্ষেত্রগুলি পূরণ করে চালিয়ে যান, তবে তারপরে তিনি "না" বলেছেন এবং অ্যাপ্লিকেশন বা ট্যাবটি বন্ধ করে দিয়েছেন, কিন্তু ইতিমধ্যে আপনি সফলভাবে চিত্রটি আপলোড করেছেন। এর অর্থ আপনি কোনও চিত্র আপলোড করেছেন যা কোথাও বরাদ্দ নেই।

এটি পরিচালনা করার বিভিন্ন উপায় রয়েছে। সর্বাধিক সহজটি হ'ল "আমি যত্ন করি না", এটি প্রাসঙ্গিক, যদি এটি খুব ঘন ঘন ঘটে না থাকে বা প্রতিটি চিত্র ব্যবহারকারী আপনাকে পাঠায় (কোনও কারণে) সংরক্ষণ করার ইচ্ছাও থাকে এবং আপনি কোনওটি চান না মুছে ফেলার।

আর একটি সহজ খুব সহজ - আপনার কাছে CRON রয়েছে এবং প্রতি সপ্তাহে এবং আপনি এক সপ্তাহের চেয়ে পুরানো সমস্ত নিরপেক্ষ চিত্রগুলি মুছুন।


ইন্টারনেট সংযোগের কারণে অনুরোধটি ব্যর্থ হলে [চিত্রটি নির্বাচন করার সাথে সাথে এটি ব্যাকগ্রাউন্ডে আপলোড শুরু করা হয় (সাধারণত / চিত্রের শেষের দিকে পোস্ট করুন), আপলোড করার পরে আপনাকে আইডি ফিরিয়ে দেয়] কী হবে? আপনি যখন ব্যবহারকারীকে অন্য কোনও ক্ষেত্রের (যেমন ঠিকানা, নাম, ...) এগিয়ে যাওয়ার সময় অনুরোধ করবেন? আমি বাজি ধরেছি যে ব্যবহারকারী "প্রেরণ" বোতামটি আঘাত না করা পর্যন্ত আপনারা অপেক্ষা করবেন এবং "আপলোডিং ..." বলে স্ক্রিনটি দেখার সময় আপনার অনুরোধটি তাদের আবার অপেক্ষা করুন।
অ্যাড্রোমাল বালাইস

5
@ অ্যাড্রোমিলবালাইস - রেস্টলফুল এপিআই রাষ্ট্রহীন, অতএব এটি কিছুই করে না (সার্ভার গ্রাহকের অবস্থার উপর নজর রাখে না)। পরিষেবার ভোক্তা (অর্থাত্ ওয়েব পৃষ্ঠা বা মোবাইল ডিভাইস) ব্যর্থ অনুরোধগুলি পরিচালনা করার জন্য দায়বদ্ধ, সুতরাং গ্রাহককে অবশ্যই সিদ্ধান্ত নিতে হবে যে এটি যদি এই ব্যর্থ হওয়ার পরে অবিলম্বে একই অনুরোধটি কল করে বা কী করা উচিত (যেমন "চিত্র আপলোড ব্যর্থ দেখান - আবার চেষ্টা করতে চান) ")
লাইবিক

2
খুব তথ্যবহুল এবং আলোকিত উত্তর। উত্তর করার জন্য ধন্যবাদ.
জুহায়ের তাহির

এটি সত্যিই প্রাথমিক সমস্যার সমাধান করে না। এটি কেবল "ক্লাউড পরিষেবা ব্যবহার করুন" বলেছেন
মার্টিন মুজতকো

3
@ মার্টিনমুজাটকো - এটি করে, এটি দ্বিতীয় বিকল্পটি চয়ন করে এবং আপনাকে কীভাবে এটি ব্যবহার করতে হবে এবং কেন তা আপনাকে জানায়। যদি আপনি বোঝাতে চান "তবে এটি নিখুঁত বিকল্প নয় যা আপনাকে এক অনুরোধে এবং জড়িত ছাড়াই সবকিছু প্রেরণ করতে দেয়" - হ্যাঁ, দুর্ভাগ্যক্রমে এরকম কোনও সমাধান নেই।
লাইবিক

103

বিভিন্ন সিদ্ধান্ত নিতে হবে :

  1. সংস্থান পথ সম্পর্কে প্রথম :

    • ছবিটি নিজস্ব হিসাবে একটি উত্স হিসাবে মডেল করুন:

      • ব্যবহারকারীর (/ ব্যবহারকারী /: আইডি / চিত্র) নেস্টেড: ব্যবহারকারী এবং চিত্রের মধ্যে সম্পর্ক স্পষ্টভাবে তৈরি করা হয়

      • মূল পথে (/ চিত্র):

        • চিত্র এবং ব্যবহারকারীর মধ্যে সম্পর্ক স্থাপনের জন্য ক্লায়েন্টকে দায়ী করা হয় বা;

        • কোনও চিত্র তৈরি করতে ব্যবহৃত পোষ্ট অনুরোধের সাথে যদি কোনও সুরক্ষা প্রসঙ্গ সরবরাহ করা হয় তবে সার্ভারটি স্পষ্টতই প্রমাণীকৃত ব্যবহারকারী এবং চিত্রের মধ্যে একটি সম্পর্ক স্থাপন করতে পারে।

    • ব্যবহারকারীর অংশ হিসাবে চিত্রটি এম্বেড করুন

  2. দ্বিতীয় সিদ্ধান্তটি কীভাবে চিত্রের উত্সকে উপস্থাপন করবেন সে সম্পর্কে :

    • বেস 64 এনএসড জেএসএন পে-লোড হিসাবে
    • মাল্টিপার্ট পেলোড হিসাবে

এটি আমার সিদ্ধান্তের ট্র্যাক হবে:

  • আমি সাধারণত সম্পাদনার চেয়ে নকশাকেই সমর্থন করি যদি না এটির পক্ষে দৃ unless় কেস না থাকে strong এটি সিস্টেমটিকে আরও রক্ষণাবেক্ষণযোগ্য করে তোলে এবং ইন্টিগ্রেটারদের দ্বারা আরও সহজে বোঝা যায়।
  • সুতরাং আমার প্রথম চিন্তাটি ইমেজ রিসোর্সের একটি বেস 64 প্রতিনিধিত্বের জন্য যেতে হবে কারণ এটি আপনাকে সমস্ত কিছু JSON রাখতে দেয়। আপনি যদি এই বিকল্পটি চয়ন করেন তবে আপনি নিজের পছন্দ মতো উত্সের পথের মডেল করতে পারেন।
    • যদি ব্যবহারকারী এবং চিত্রের মধ্যে সম্পর্ক 1 থেকে 1 হয় তবে আমি চিত্রটিকে একটি বৈশিষ্ট্য হিসাবে মডেল করতে চাই বিশেষত যদি উভয় ডেটা সেট একই সাথে আপডেট হয়। অন্য যে কোনও ক্ষেত্রে আপনি নিখরচায় চিত্রটিকে মডেল বাছাই করতে পারেন বৈশিষ্ট্য হিসাবে, এটি পুট বা প্যাচএইচ এর মাধ্যমে আপডেট করুন, বা পৃথক সংস্থান হিসাবে।
  • আপনি যদি মাল্টিপার্ট পেওলড চয়ন করেন তবে আমি চিত্রটিকে নিজের সম্পদ হিসাবে মডেল করতে বাধ্য হব, যাতে অন্য ক্ষেত্রে, আমাদের ক্ষেত্রে, ব্যবহারকারী সংস্থানটি, চিত্রটির জন্য বাইনারি উপস্থাপনা ব্যবহারের সিদ্ধান্তের দ্বারা প্রভাবিত না হয়।

তারপরে প্রশ্নটি আসে: বেস 64 বনাম মাল্টিপার্ট বেছে নেওয়া সম্পর্কে কোনও কার্যকারিতা প্রভাব আছে কি? । আমরা ভাবতে পারি যে মাল্টিপার্ট ফরম্যাটে ডেটা এক্সচেঞ্জ করা আরও দক্ষ হওয়া উচিত। তবে এই নিবন্ধটি দেখায় যে আকারের ক্ষেত্রে উভয় উপস্থাপনা কতটা পৃথক।

আমার পছন্দ বেস 64:

  • ধারাবাহিক ডিজাইনের সিদ্ধান্ত
  • অবহেলিত কর্মক্ষমতা প্রভাব
  • ব্রাউজারগুলি যেমন ডেটা ইউআরআই বুঝতে পারে (বেস 64 এনকোডড চিত্রগুলি), ক্লায়েন্ট যদি ব্রাউজার হয় তবে এগুলি রূপান্তর করার দরকার নেই
  • এটিকে অ্যাট্রিবিউট বা স্বতন্ত্র সম্পদ হিসাবে রাখার বিষয়ে আমি কোনও ভোট দেব না, এটি আপনার সমস্যা ডোমেন (যা আমি জানি না) এবং আপনার ব্যক্তিগত পছন্দের উপর নির্ভর করে।

3
প্রোটোবুফ ইত্যাদির মতো আমরা অন্যান্য সিরিয়ালাইজেশন প্রোটোকল ব্যবহার করে ডেটাটি এনকোড করতে পারি না? মূলত আমি বুঝতে চেষ্টা করছি যে বেস base৪ টি এনকোডিংয়ের সাথে আকার এবং প্রক্রিয়াকরণের সময় বৃদ্ধির জন্য আরও সহজ উপায় রয়েছে কিনা address
অ্যান্ডি ডুফ্রেসনে

1
খুব আকর্ষক উত্তর। ধাপে ধাপে পদ্ধতির জন্য ধন্যবাদ। এটি আমাকে আপনার বিষয়গুলি আরও ভালভাবে বোঝায়।
জুহায়ের তাহির

13

আপনার দ্বিতীয় সমাধান সম্ভবত সবচেয়ে সঠিক। আপনার HTTP স্পেসটি ব্যবহার করা উচিত এবং মাইটাইম টাইপগুলি সেগুলি করার উদ্দেশ্যে ছিল এবং ফাইলটি আপলোড করার মাধ্যমে multipart/form-data। সম্পর্কগুলি পরিচালনা করার ক্ষেত্রে, আমি এই প্রক্রিয়াটি ব্যবহার করব (আপনার অনুমানগুলি বা সিস্টেমের নকশা সম্পর্কে আমি শূন্য জানি):

  1. POSTথেকে /usersব্যবহারকারী সত্তা তৈরি করুন।
  2. POSTচিত্রটি /images, নিশ্চিত করুন যাতে Locationএইচটিটিপি অনুমান অনুযায়ী চিত্রটি পুনরুদ্ধার করা যেতে পারে যেখানে একটি শিরোনাম ফিরে আসবে ।
  3. PATCHথেকে /users/carPhotoএবং এটি বরাদ্দ দেওয়া ছবির আইডি Locationধাপ 2 শিরোলেখ।

1
"ক্লায়েন্ট কীভাবে এপিআই ব্যবহার করবে" এর আমার কোনও প্রত্যক্ষ নিয়ন্ত্রণ নেই ... এর সমস্যা হ'ল "মৃত" ছবিগুলি যা কিছু সংস্থানগুলিতে প্যাচ করা হয় না ...
libik

4
সাধারণত আপনি যখন দ্বিতীয় বিকল্পটি পছন্দ করেন, প্রথমে মিডিয়া উপাদানটি আপলোড করতে এবং ক্লায়েন্টের কাছে মিডিয়া শনাক্তকারীকে ফিরিয়ে দেওয়া পছন্দ করা হয়, তারপরে ক্লায়েন্ট মিডিয়া শনাক্তকারী সহ সত্তার ডেটা প্রেরণ করতে পারে, এই পদ্ধতির ভাঙা অস্তিত্বগুলিকে এড়ানো যায় না বৈচিত্র্যের তথ্য।
কেলারম্যান রিভারো

2

এর থেকে সহজ সমাধান নেই। প্রতিটি উপায়ে তাদের পক্ষে মতামত রয়েছে। কিন্তু ক্যানোনিকাল পথ প্রথম বিকল্প ব্যবহার করছে: multipart/form-data। যেমন ডাব্লু 3 সুপারিশ গাইড বলে

"মাল্টিপার্ট / ফর্ম-ডেটা" বিষয়বস্তু ফাইলগুলি ফর্ম জমা দেওয়ার জন্য ব্যবহার করা উচিত যা ফাইলগুলি, অ-এএসসিআইআই ডেটা এবং বাইনারি ডেটা ধারণ করে।

আমরা প্রকৃতপক্ষে ফর্মগুলি প্রেরণ করছি না, তবে অন্তর্নিহিত নীতিটি এখনও প্রযোজ্য। বাইনারি উপস্থাপনা হিসাবে বেস 64 ব্যবহার করা ভুল, কারণ আপনি আপনার লক্ষ্য অর্জনের জন্য ভুল সরঞ্জামটি ব্যবহার করছেন, অন্যদিকে, দ্বিতীয় বিকল্পটি আপনার এপিআই পরিষেবাটি গ্রাস করতে আপনার এপিআই ক্লায়েন্টদের আরও কাজ করতে বাধ্য করে। সহজে ব্যবহারযোগ্য এপিআই সরবরাহ করার জন্য আপনার সার্ভার সাইডে কঠোর পরিশ্রম করা উচিত। প্রথম বিকল্পটি ডিবাগ করা সহজ নয় তবে আপনি যখন এটি করেন, সম্ভবত এটি কখনই পরিবর্তিত হয় না।

ব্যবহার করে multipart/form-dataআপনি আরইএসটি / এইচটিপি দর্শনের সাথে লেগে আছেন। আপনি এখানে অনুরূপ প্রশ্নের উত্তর দেখতে পারেন ।

বিকল্পের সাথে মিশ্রিত করা হলে অন্য বিকল্প, আপনি মাল্টিপার্ট / ফর্ম-ডেটা ব্যবহার করতে পারেন তবে প্রতিটি মান পৃথক করে প্রেরণের পরিবর্তে আপনি এর ভিতরে জসন পেডলোডের সাথে পেডলোড নামের একটি মান প্রেরণ করতে পারেন। (আমি এএসপি.নেট ওয়েবএপিআই 2 ব্যবহার করে এই পদ্ধতির চেষ্টা করেছি এবং ভাল কাজ করে)।


2
এই ডাব্লু 3 এর সুপারিশ গাইডটি এখানে অপ্রাসঙ্গিক, কারণ এটি HTML 4 অনুষঙ্গের প্রসঙ্গে।
জোহান

1
খুব সত্য .... "ASCII- ডেটাবিহীন" এর জন্য মাল্টিপার্ট দরকার? একবিংশ শতাব্দীতে? একটি ইউটিএফ -8 বিশ্বে? অবশ্যই এটি আজকের জন্য একটি হাস্যকর সুপারিশ। আমি এমনকি অবাক হয়েছি যে এইচটিএমএল 4 দিনের অস্তিত্ব ছিল, কিন্তু কখনও কখনও ইন্টারনেট অবকাঠামো বিশ্বের খুব ধীরে ধীরে চলে।
রায় তোয়াল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.