আংশিক সফল অনুরোধের জন্য HTTP স্থিতি কোড code


115

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

এখন আমি নিজেকে জিজ্ঞাসা করছি আবেদনের উপযুক্ত স্থিতি কোডটি কী হবে বলছে যে অনুরোধটি গৃহীত হয়েছিল তবে এমন কিছু জিনিস রয়েছে যা করা যায়নি।

তালিকায় নিখোঁজ ব্যবহারকারীদের অন্তর্ভুক্ত করার অনুমতি না দিলে সমস্যা এড়ানো হবে। তারপরে প্রেরণার প্রচেষ্টাটি কেবল 4XX ত্রুটিটি পেতে পারে। তবে এই ভাবে এপিআই গঠনের কোনও মানে নেই। অন্যদিকে আমি ত্রুটি শর্তটিকে সম্পূর্ণরূপে অ্যাপ্লিকেশন নির্দিষ্ট বলে বিবেচনা করতে পারি। তবে 200 জন প্রেরণ করা ঠিক মনে হচ্ছে না। এবং ত্রুটির প্রতিক্রিয়াটি গভীরভাবে দেখার জন্য ক্লায়েন্টকে কোনও ইঙ্গিত দেওয়া ভাল হবে। উদাহরণস্বরূপ যে ব্যবহারকারীদের বার বার প্রেরণ এড়ানোর জন্য

উত্তর:


66

আমি একটি খুব অনুরূপ ইস্যু নিয়ে কাজ করেছি। এই ক্ষেত্রে, আমি একটি ফিরে

207 মাল্টি-স্ট্যাটাস

এখন, এটি কঠোর এইচটিটিপি নয়, এটি ওয়েবডিএভি এক্সটেনশনের অংশ, সুতরাং আপনার যদি ক্লায়েন্টের উপরও নিয়ন্ত্রণ না থাকে, তবে এটি আপনার পক্ষে ভাল নয়। আপনি যদি করেন তবে আপনি এরকম কিছু করতে পারেন:

   <?xml version="1.0" encoding="utf-8" ?>
   <D:multistatus xmlns:D='DAV:'>
     <D:response>
       <D:user>user-123</D:user>
       <D:status>success</D:status>
     </D:response>
     <D:response>
       <D:user>user-789</D:user>
       <D:status>failure</D:status>
     </D:response>
   </D:multistatus>

তবে আবার এটি একটি এইচটিটিপি এক্সটেনশন এবং আপনার ক্লায়েন্টের নিয়ন্ত্রণও রাখা দরকার।


3
আমি এটি ব্যবহার সম্পর্কে ভেবেছিলাম তবে আমি এটিতে বেশ স্বাচ্ছন্দ্য বোধ করি না। ধন্যবাদ!
নরবার্ট হার্টল

এটির সম্পর্কে দুর্দান্ত বিষয়টি হ'ল আপনি যতটা প্রাসঙ্গিক ডেটা চান তা ফিরিয়ে দিতে পারবেন - যা মিশ্র-ডেটা সেটগুলির জন্য বিশেষত কার্যকর, যেমন: যেখানে কিছু ব্যর্থ হয় এবং কিছু পাস হয়।
কিলার

আমি বুঝেছি. আমি কেবল স্ট্যাটাস হ্যান্ডলিংয়ের একটি অতিরিক্ত স্তরের এড়াতে চাইছি (যা ভাল আইএমএইচও নয়)। আমার বেশিরভাগ কোড এইচটিটিপি'র সাথে কাজ করে। এবং আমি মনে করি আমার বর্ণিত ব্যবহারের কেসটি ছাড়াই জরিমানা করবে।
নরবার্ট হার্টল

আপনি সর্বদা একটি দেহকে ফেরত পাঠাতে পারেন - JSON প্রতিক্রিয়া সহ 200 জন প্রেরণ করুন বা কোনটি সফল হয়েছে তা নির্ধারণ করতে আপনি এতে যা কিছু চান তা প্রেরণ করুন।
কিলার

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

65

আমারও একই সমস্যা ছিল এবং আমি দুটি ভিন্ন সমাধান ব্যবহার করে শেষ করেছি:

  • এইচটিটিপি রিটার্ন কোড 202: Accepted, এটি নির্দেশ করে যে অনুরোধটি ঠিক ছিল, তবে আসলে যা করা উচিত ছিল তার কোনও গ্যারান্টি নেই।
  • 200প্রতিক্রিয়াটিতে একটি স্বাভাবিক ফিরে আসুন , তবে প্রতিক্রিয়া বডিটিতে কী প্যান করে না তার একটি তালিকা অন্তর্ভুক্ত করুন।

দ্বিতীয়টি সাধারণত সর্বোত্তমভাবে কাজ করে তবে আপনি যদি অলস হন বা প্রক্রিয়াজাতকরণের জন্য একটি সারি ব্যবহার করেন তবে প্রথমটি দুর্দান্ত।


5
202 কি সারিবদ্ধ হওয়ার মতো আরও কিছু উল্লেখ করছে না?
সিনেস্টেথিক

6
হ্যাঁ, @ সিনেস্টেস্টিক। অতি সাম্প্রতিক HTTP 1.1 স্পেস থেকে, "(...) প্রক্রিয়াজাতকরণের জন্য অনুরোধ গৃহীত হয়েছে, তবে প্রক্রিয়াজাতকরণটি সম্পন্ন হয়নি"। সুতরাং, আংশিক সাফল্যের জন্য, 202 উপযুক্ত নয়
হুয়েরসিও

-4

206 আংশিক সামগ্রী ব্যবহার সম্পর্কে কি? আমি জানি 206 রেঞ্জগুলি সম্পর্কে আরও বেশি, তবে যদি এটি আংশিকভাবে সফলভাবে অনুরোধটি নির্দেশ করতে পারে?


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

-14

হাইপারটেক্সট ট্রান্সফার প্রোটোকল জিনিসগুলির সংক্রমণ দিকের সাথে কাজ করে। অ্যাপ্লিকেশন স্তরের ত্রুটিগুলি মোকাবেলায় এতে ত্রুটি কোড নেই।

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


18
এইচটিটিপি একটি অ্যাপ্লিকেশন স্তর প্রোটোকল। আপনি এটিকে কেবল পরিবহন এবং অ্যাপ্লিকেশন স্তরে রাখতে পারবেন না। যদি আপনি ওএসআই সম্পর্কে চিন্তা করেন তবে এইচটিটিপি 5-7 স্তরগুলিতে রয়েছে। এইচটিটিপি কিছুটা আলাদা। বেশিরভাগ শিরোনাম এবং রিটার্ন কোডগুলি অবশ্যই অ্যাপ্লিকেশন নির্দিষ্ট। কোডগুলি কেবল HTTP প্রোটোকল সত্তাগুলিতে প্রদত্ত তথ্যের উপর নির্ভর করে না কাস্টম অ্যাপ্লিকেশন বিন্যাসের জিনিসগুলিতে। 200 সম্পর্কে আমি বলব যে আপনার সংজ্ঞাটি সম্পূর্ণরূপে ভুল যদি এটি ক্রিয়াপত্রে পোস্ট না করা হয় তবে এটি প্রয়োগ করা হয়। তবে পোস্ট গেমটি কিছুটা পরিবর্তন করেছে এবং এই প্রসঙ্গে আপনার অনুমান "সঠিকভাবে পরিচালিত" নিশ্চিত নয়, হয়
নরবার্ট হার্টল

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

2
শুধু পরিষ্কার হতে। একটি REST উপায়ে HTTP হ'ল সংস্থানকেন্দ্রিক। এই প্রসঙ্গে 200 এর অর্থ পরিচয় (আপনি যে সংস্থানটি নির্দিষ্ট করেছেন) তার পরিবর্তে 3xx যা পরিচয়ের দিক নির্দেশ করে points পোস্ট ব্যবহার করে রিসোর্স ইউআরআইকে একটি প্রসেসিং ইউআরআইতে পরিণত করে এবং সেখানে ত্রুটি কোডগুলি মোকাবেলা করা প্রয়োজন need প্রসঙ্গটি কিছুটা বদলে যায় এবং বিষয়গুলির সংজ্ঞাটি কিছুটা ঝাপসা হয়ে যায় বা কমপক্ষে বোঝা শক্ত হয়
নরবার্ট হার্টল

1
কনটেক্সট শিফট মানেই উপযুক্ত ত্রুটি কোড নেই, যেহেতু প্রোটোকলটি কখনই সেই প্রসঙ্গটি মাথায় রেখে তৈরি করা হয়নি ;-) আমিও মনে করি যে ত্রুটি কোডগুলি ব্যবহার করে আপনার সতর্ক হওয়া উচিত কারণ প্রক্সি সার্ভারগুলি আপনার প্রতিক্রিয়াটি প্রতিস্থাপনের সাথে প্রতিস্থাপনের সাথে চালিয়ে তাদের সাথে চলতে থাকে tend কাস্টম ত্রুটি পৃষ্ঠা, এটি একটি সত্য পিআইটিএ হতে পারে।
এভিআই

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