RESTful API নকশা। সারি না থাকলে আমি কী ফিরিয়ে দেব?


50

আমি বর্তমানে স্লিম ফ্রেমওয়ার্ক সহ একটি সোশ্যাল নেটওয়ার্কের জন্য একটি এপিআই কোডিং করছি। আমার প্রশ্ন হ'ল: যখন জসন কাঠামোয় ফিরে আসার জন্য কোনও সারি নেই তখন সেরা অনুশীলনগুলি কী কী?

বলুন যে এই কলটি / ভি 1 / পান / চলচ্চিত্রগুলি সারণী চলচ্চিত্রের নামগুলি থেকে 2 টি সারি ফেরত দেয়:

[
    {"name": "Ghostbusters"},
    {"name": "Indiana Jones"}
]

তবে, আমি তখন কল করি / ভি 1 / গেইট / বই এবং সেই টেবিলে কোনও সারি নেই। আমি কি খালি কাঠামো ফিরিয়ে দেব?

[
]

... বা এটি একটি বার্তা এবং একটি ত্রুটি কোড ভাল হবে?

[
    "errors": {
        "message": "no matches found",
        "code": 134
    }
]

কোনটি একটি ভাল অনুশীলন? (আইপিএল আইওএস এবং অ্যান্ড্রয়েড অ্যাপ্লিকেশনগুলিতে ব্যবহৃত হবে) ধন্যবাদ!


3
আমার কাছে এটি শূন্য আসলে একটি পরিমাণ কিনা তা প্রশ্নের মতো মনে হয়।
স্কার্ফ্রিজ

16
আপনার উদাহরণটি নষ্ট হয়ে গেছে। সদৃশ কীগুলির সাথে আপনার কোনও জসন সামগ্রী থাকতে পারে না। আপনি যা সন্ধান করছেন তা একটি অ্যারে, অর্থাত্[{"name": "..."}, {"name":"..."}]
মার্টিন উইকম্যান

@ মার্টিন উইকম্যান এর জন্য দুঃখিত, আমি এটি ঠিক করেছি।
অ্যান্ড্রেস এসকে

8
@ ওন্দুফো, আসলে আপনি করেননি ...
আভাকার

25
যদি আপনার অ্যাপ্লিকেশনটি বিশ্রামের জন্য বোঝানো হয়, তবে ক্রিয়া / পদ্ধতিটি আপনার শেষ পয়েন্ট ইউআরআইয়ের একটি অংশ "কেন"?
ব্যবহারকারী 50849

উত্তর:


46

সাধারণত আমি মেটাডেটা হিসাবে ফলাফল রেকর্ড সংখ্যা ফিরে আসত। আমি নিশ্চিত নই যে এটি স্বাভাবিক আরএসটি অনুশীলন কিনা, তবে এটি অতিরিক্ত অতিরিক্ত ডেটা নয় এবং এটি খুব সুনির্দিষ্ট। সাধারণত প্রচুর পরিষেবার জন্য পৃষ্ঠা রয়েছে, এটি একবারে বিশাল রেজাল্টটি ফিরিয়ে দেওয়া অবৈধ। ব্যক্তিগতভাবে আমি বিরক্ত নই যখন ছোট ফলাফলের সেটের জন্য পত্রাঙ্কন এসে গেছে .. যদি খালি, প্রত্যাবর্তন number_of_records : 0এবং বইগুলি খালি তালিকা / অ্যারে হিসাবে books : []

{
    meta: {
        number_of_records : 2,
        records_per_page : 10,
        page : 0
    },
    books : [
        {id:1},
        {id:27}
    ]
}

সম্পাদনা (কয়েক বছর পরে): মার্টিন উইকম্যানের উত্তর আরও ভাল, কেন তা ব্যাখ্যা করার জন্য এখানে "সংক্ষিপ্ত" রয়েছে।

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

সাধারণত, আপনি যদি পারেন তবে অতিরিক্ত চেষ্টা করার চেষ্টা করুন এবং পৃষ্ঠা-রচনা এড়ান। পৃষ্ঠাগুলি অতিরিক্ত রাজ্য যা রূপান্তরিত হতে পারে এবং এই জাতীয় পরিবর্তনগুলি ট্র্যাক করা ত্রুটি প্রবণ, আরও বেশি কারণ সার্ভার এবং ক্লায়েন্ট উভয়ই এটি পরিচালনা করতে পারে।

আপনার যদি একবারে প্রক্রিয়া করার জন্য খুব বেশি ডেটা থাকে , তবে সেই তালিকার কিছু অংশের জন্য সমস্ত ফলাফল এবং বিশদ সহ "আইডি তালিকা" ফেরত বিবেচনা করুন এবং সংস্থার জন্য মাল্টি_জেট / get_by_id_list API কল সরবরাহ করুন।


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

1
-1 কারণ booksপ্যারামিটারটি একটি অবজেক্ট তবে 'বই' একের বেশি এবং একাধিক অ্যারে বোঝায়। মেটা ডেটা দুর্দান্ত এবং সবশেষে আমি বইয়ের সংকলন বইয়ের বস্তুর একটি অ্যারে হিসাবে প্রত্যাশা করব; যদি কোনও বই না থাকে তবে আমাকে খালি অ্যারেটি দিন
চার্লস স্প্রেবেরি

9
এটির সাথে সমস্যা হ'ল "নাম্বার_সরে_কে" যুক্ত করার ফলে আর কোনও তথ্য সরবরাহ করা হয় না, এটি কেবল অতিরিক্ত বাড়াবাড়ি যুক্ত করে এবং জটিলতা বাড়ায়। একটি ত্রুটি সিগন্যাল করতে, একটি উপযুক্ত http কোড + দেহে কিছু ফিরিয়ে দিন।
মার্টিন উইকম্যান

1
ইজকাটা আমার টাইপো অনুসারে @ স্প্রে বইয়ের তালিকা রয়েছে।
গ্রিজওয়াকো

2
@ মার্টিন উইকম্যান আমি অতিরিক্ত মেটাডেটা দিয়ে মূল উত্তরটি কলুষিত করতে চাইনি, তবে আমার অভিজ্ঞতায়, প্রচুর পরিষেবাগুলি সরাসরি সমস্ত ডেটা ফেরত দেয় না, তবে "পৃষ্ঠাবদ্ধ" উপায়ে।
গ্রিজওয়াকো

105

আপনার উদাহরণটি নষ্ট হয়ে গেছে। ডুপ্লিকেট কী সহ আপনার জেসন বস্তু থাকা উচিত নয়। আপনি যা খুঁজছেন তা হ'ল চলচ্চিত্রের বিষয়বস্তুগুলির সাথে একটি অ্যারে , এটি:

 [
    {"name": "movie1"}, 
    {"name": "movie2"}
 ]

এই পদ্ধতির এছাড়াও আপনার প্রশ্নের উত্তর। আপনি কোন খালি অ্যারে ফিরে উচিত যখন কোয়েরি সাথে মিলছে না:

[]

অন্যদিকে, আপনি যদি নির্দিষ্ট মুভি রিসোর্সটি পাওয়ার চেষ্টা করেন GET api/movie/34এবং সেই মুভিটির অস্তিত্ব নেই, তবে শরীরে একটি উপযুক্ত (জসন এনকোডড) ত্রুটি বার্তা দিয়ে 404 ফিরিয়ে দিন


1
+1 এটি অনুসারে বৈধ JSON json_xs
l0b0

15

যদি এটি জেএসএন হয় তবে আপনার সত্যিকার অর্থে অবজেক্টের অ্যারে ফিরিয়ে নেওয়া উচিত। এর অনেকগুলি সুবিধা রয়েছে যা সহ আপনার যখন কোনও রেকর্ড নেই এটি খালি অ্যারে।

সুতরাং যখন আপনার রেকর্ড রয়েছে, আপনি ফিরে আসবেন:

    [
        {"name": "Ghostbusters"},
        {"name": "Indiana Jones"}
    ]

এবং যখন আপনার কোনও রেকর্ড নেই, আপনি ফিরে আসবেন:

    [

    ]

14

আপনি যদি সফলভাবে অপারেশনটি সম্পাদন করেন তবে এর আর ফিরে আসার মতো কিছু নেই, যেমন খালি মানচিত্র {}বা খালি অ্যারে []আমি ২০৪ টি প্রতিক্রিয়া কোড দিয়ে প্রতিক্রিয়া জানাতে পছন্দ করব, এখানে এইচটিটিপি স্থিতি কোড সংজ্ঞা স্পেস থেকে উদ্ধৃত :

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

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

২০৪ টি প্রতিক্রিয়ার মধ্যে কোনও বার্তা-শৃঙ্খলা অন্তর্ভুক্ত নয় এবং এটি শিরোনাম ক্ষেত্রগুলির পরে প্রথম খালি লাইন দ্বারা সর্বদা সমাপ্ত হয়।

মূলত, ফিরে আসার মতো কিছু না থাকলে আমি এইচটিটিপি-র মাধ্যমে বিশ্রামের অ্যাপ্লিকেশনগুলিতে 204 ব্যবহার করার পরামর্শ দিই recommend


4
আমি এখানে অন্যান্য উত্তরে @ অবাকরের মন্তব্যের সাথে একমত। যদি ক্লায়েন্টের / ভি 1 / গেই / মুভি / 1 এ অ্যাক্সেস করার চেষ্টা করা হয় তবে 1 টির মধ্যে সনাক্তকরণযোগ্য সিনেমা না থাকলে 404 ফেরত আসা উচিত Just জাস্ট / ভি 1 / গেইট / সিনেমাগুলি সিনেমা না থাকলেও 200 ফিরিয়ে আনতে হবে। তবে 204 উপযুক্ত নয় কারণ এটি ইনপুট ক্রিয়াকলাপগুলির উদ্দেশ্যে।
imel96

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

7
আমি বিশ্বাস করি যে এটি 204 এর উদ্দেশ্যটির একটি অপপ্রচারযোগ্য 20 204 টি এমন অপারেশনগুলির উদ্দেশ্যে নয় যা প্রত্যাশিত সামগ্রী প্রত্যাশা করেছিল এবং কোনওটি খুঁজে পেতে ব্যর্থ হয়েছিল, বরং সফলভাবে পরিচালিত এবং কোনও প্রত্যাশিত প্রত্যাবর্তন নেই এমন অপারেশনের জন্য নয় । উইকিপিডিয়া থেকে: "সার্ভারটি সফলভাবে অনুরোধটি প্রক্রিয়া করেছে, কিন্তু কোনও সামগ্রী ফিরে পাচ্ছে না Usually সাধারণত সফলভাবে মুছার অনুরোধের প্রতিক্রিয়া হিসাবে ব্যবহৃত হয়।"
এক্সএমএল

10

সেখানে কাজের একটি যুক্তিসঙ্গত পরিমাণ একটি তৈরি সম্পন্ন হয়েছে প্রমিত তাদেরকে JSON এপিআই বিন্যাস

সেই স্পেসিফিকেশনের নীতিগুলি অনুসরণ করার অর্থ হ'ল সমস্ত উত্সগুলি কার্যকরভাবে "সংগ্রহ" হওয়া উচিত (এমনকি যখন কেবল একটি একক সংস্থান অন্তর্ভুক্ত থাকে)। এটি অনুসরণ করার অর্থ হ'ল আপনার কলটি /v1/get/moviesফিরে আসবে:

{
    "movies": [
        {"name": "Ghostbusters"},
        {"name": "Indiana Jones"}
    ]
}

আপনার কলটিতে /v1/get/books(যা শূন্য সংস্থান দেয়) ফিরে আসবে:

{
    "books": []
}

5

আপনার নির্দিষ্ট উদাহরণের জন্য, আমি সুপারিশ করব / v1 / get / book খালি অ্যারে দিয়ে HTTP 200 ফিরিয়ে দেবে।

আমি যদি আপনার পোস্টটি এখনই পড়ছি তবে আপনার এপিআই বই সংগ্রহ করার ইচ্ছা করে। রূপকভাবে বলতে গেলে, আপনার কাছে বইয়ের জন্য একটি বইয়ের তাক রয়েছে, চলচ্চিত্রের জন্য একটি ডিভিডি র্যাক এবং সম্ভবত অন্যান্য ধারক যা আপনি এখানে উল্লেখ করেন নি। কারণ আপনি বই সংগ্রহ করার উদ্দেশ্যে, / ভি 1 / গেইট / বইগুলি আপনার বইয়ের তাক। এর অর্থ সেখানে একটি বৈধ সংস্থান আছে - একটি বইয়ের তালিকা- যা আপনার নির্দিষ্ট উদাহরণে খালি থাকে।

আমি এই ক্ষেত্রে এইচটিটিপি 404 ফিরিয়ে দেওয়ার পরামর্শ না দেওয়ার কারণটি হ'ল বইয়ের তাকটি এখনও আছে। এই মুহূর্তে এটিতে কোনও বই নেই, তবে এটি এখনও একটি বইয়ের তাক lf যদি এপিআই -if একটি বইয়ের থাকটি ছিল না নিদর্শন জন্য, বই সংগ্রহ করতে চাননি তারপর HTTP- র 404 উপযুক্ত হবে। তবে সেখানে একটি সংস্থান রয়েছে বলে আপনাকে সিগন্যাল দেওয়া উচিত নয় যে একটি নেই যা HTTP 404 করে। অতএব, আমি যুক্তি দিচ্ছি যে 200 খালি অ্যারে সহ (সংগ্রহটি নির্দেশ করে) আরও উপযুক্ত is

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

তবে আমি যুক্তি দিচ্ছি যে একটি খালি-তবে-বৈধ সংগ্রহ সংগ্রহ করার জন্য, এইচটিটিপি 204 এর কোনও অর্থ নেই। যদি সংগ্রহে আইটেমগুলি থাকে, তবে সঠিক উপস্থাপনাটি সেই ডেটার একটি অ্যারে হত। সুতরাং, যখন সেখানে কোনও ডেটা নেই (তবে সংগ্রহটি বৈধ), সঠিক উপস্থাপনাটি একটি ফাঁকা অ্যারে ray


5

আপনার সত্যিই দুটি কাজের মধ্যে একটি করা উচিত do

হয় কোনও 200 (OK)স্থিতি কোড এবং শরীরে একটি ফাঁকা অ্যারে ফিরুন ।

অথবা একটি 204 (NO CONTENT)স্থিতি কোড এবং কোনও প্রতিক্রিয়া বডি ফিরিয়ে দিন।

আমার কাছে, বিকল্প 2 টি আরও প্রযুক্তিগতভাবে সঠিক এবং REST এবং HTTP নীতিগুলির সাথে সামঞ্জস্য রেখে মনে হচ্ছে।

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


3

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


3

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

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

এখানে কোনও "সেরা অনুশীলন" নেই, আপনার দুটি উদাহরণই স্বেচ্ছাসেবী, কেবল একটি বেছে নিন এবং ধারাবাহিক হন । বিকাশকারীরা বিস্ময় ঘৃণা করে, যদি সিনেমা না থাকে তবে যদি /v1/get/moviesফিরে আসে {}তবে আমরা যখন অভিনেতা না থাকি /v1/get/actorsতখনও ফিরে আসব বলে আশা করব {}


1
404 ফিরিয়ে দেওয়া সত্যিই সঠিক জিনিস, তবে দুঃখের বিষয় কেউই সত্যই তা করে না - আমার অন্তর্ভুক্ত।
রিবল্ড এডি

1
আপনার যদি জটিল প্রতিক্রিয়া থাকে এবং সেগুলির কেবলমাত্র অংশ খালি থাকে, 404 ফেরত দেওয়া ব্যবহারকারীকে বিভ্রান্ত করবে।
ডেভনুল

5
আমি 404 বার্তার সাথে একমত নই। একটি 404 আমি "উত্সের অস্তিত্ব নেই" হিসাবে ব্যাখ্যা করব এবং আমার ইউআরএল বা যে কোনও কিছুতে আমার কিছু ভুল হয়েছে কিনা তা চিন্তা করুন। আমি যদি চলচ্চিত্রের তালিকার জন্য জিজ্ঞাসা করি এবং 404 পাই তবে আমি ভাবব যে কোনও সিনেমার সংস্থান নেই। একটি "204 কোনও সামগ্রী নেই" আরও উপযুক্ত হতে পারে।
থারস্টেন মোলার

8
ঠিক আছে, "দেহ নেই" জিনিসটি এটি হত্যা করবে। তবে: "স্ট্যাটাস কোডের 4XX শ্রেণীর ক্ষেত্রে ক্লায়েন্টটি ভুল হয়েছে বলে মনে হচ্ছে" " তবে ক্লায়েন্টের পক্ষ থেকে কোনও ত্রুটি ছিল না। সুতরাং একটি 404 ভুল তথ্য দেয়। হয় দেহ ছাড়াই 204 প্রেরণ করুন বা এটি ঠিক আছে এবং খালি তালিকা প্রেরণ করুন।
থারস্টেন মুলার

9
আপনি বইয়ের একটি তালিকা চাইছেন, 404 ফেরার অর্থ এই হবে যে তালিকার কোনও অস্তিত্ব নেই, এটি খালি নেই। খালি তালিকা সহ 200 ফিরিয়ে দেওয়া আমার কাছে একমাত্র যুক্তিসঙ্গত বিকল্প বলে মনে হচ্ছে।
অবাকর

1

আমি মনে করি না যে কঠোর উত্তরটি চিহ্নিত হয়েছে।

প্রকৃত বিশ্রামের দৃশ্যে জন্মের দ্বারা সরবরাহ করা উত্তরটি সেরা হওয়া উচিত। শরীরের প্রতিক্রিয়া খালি থাকতে হবে এবং HTTP স্থিতি কোড: 204; রিসোর্সটি বিদ্যমান তবে এটিতে "সামগ্রী নেই" রয়েছে: খালি রয়েছে।

REST HTTP_Status_Codes


1

আমি 200 + খালি অ্যারের প্রস্তাব দিচ্ছি, যেহেতু এটি API এর সমস্ত ক্লায়েন্টদের দ্বারা পরিচালনা পরিচালনা সহজ করে। 200 + অ্যারের অর্থ "আমি সেখানে থাকা সমস্ত ডেটা ফিরিয়ে দিয়েছি"। উভয়ই ডেটা সরবরাহ করার কোড এবং কোডটি এটি প্রক্রিয়াজাত করে, আইটেমের সংখ্যা অপ্রাসঙ্গিক হবে।

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

204 + খালি শরীরের স্থিতি ফিরিয়ে আনার জন্য একটি পরামর্শ ছিল। তার মানে আপনি বাধ্য প্রত্যেক একক সঠিকভাবে প্রক্রিয়া অবস্থা 204 ক্লায়েন্ট। তবুও আপনি তাদের জেএসএন-এর উত্তরগুলি হ্যান্ডেল করতে বাধ্য করেন! আমি আশা করি সকলেই বুঝতে পেরেছেন যে কেবল কোনও অনুরোধের উত্তর পেয়েছে, এর অর্থ এই নয় যে HTTP ব্যবহার করার সময় উত্তরটি সার্ভার থেকে এসেছে, এবং জাস্টন এই পরীক্ষার উত্তরটি JSON হিসাবে দেখায় just


0

আমি "এটি নির্ভর করে"।

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

আমি নিশ্চিত আপনি আমার উদাহরণের সুনির্দিষ্ট সাথে বিতর্ক করতে পারেন, তবে আপনি ধারণাটি পেয়ে যান ...


0
  • প্রথমত, getআপনার ইউআরএল থাকা বিশুদ্ধ নয়, জিইটি এইচটিটিপি পদ্ধতি দ্বারা আবদ্ধ।
  • আপনি যদি সংগ্রহের জন্য অনুরোধ করে থাকেন তবে খালি অ্যারে দিয়ে GET api/moviesফেরত 200 OKপাঠান []
  • যদি আপনি কোনও নির্দিষ্ট চলচ্চিত্রের অনুরোধ করেন GET api/movies/1( 1যেমন আইডি কোথায় ) এবং এটি বিদ্যমান না থাকে তবে ফিরে আসুন 404 Not Found

কেন? আপনি সংস্থান অনুরোধ করছেন । আপনি যখন সংগ্রহের জন্য অনুরোধ করছেন তখন নিজেই সংস্থানটি উপস্থিত থাকে (সংগ্রহ)। এর জন্য, একটি 404ভুল। তবে আপনি যদি একটি নির্দিষ্ট সিনেমার জন্য অনুরোধ করেন এবং এটি উপস্থিত না থাকে, অনুরোধ করা সংস্থানটি উপস্থিত নেই এবং আপনাকে একটি ফিরে আসতে হবে 404


-2

আপনি যদি জেএসএনকে ফিরিয়ে দিচ্ছেন তবে সর্বদা গণনা এবং ত্রুটি বার্তা এবং আরও সম্ভবত একটি বুলিয়ান যা ত্রুটি বা না থাকলে ইঙ্গিত দেয় তা ভাল, এটি আমার প্রতিটি স্ট্যান্ডের তিনটি মেটা মান সারিগুলির প্রতিটি তালিকার সাথে ফিরে এসেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.