কোনও REST এপিআই কি ডেটটাইমকে উপযুক্ত ক্লায়েন্টদের টাইমজোনতে রূপান্তর করতে সক্ষম হতে হবে?


10

আমাদের এপিআই বাস্তবায়ন করার সময়, তারিখের সময় এবং সময় অঞ্চলগুলির বিষয়টি উঠে আসে।

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

এখন এপিআই-তে একই প্রশ্ন উঠেছে: অনুরোধ শব্দার্থতত্ত্বের ভিত্তিতে এপিআই কি টাইমজোনের জন্য উপযুক্ত সময়সীমাটি ফিরিয়ে দিতে সক্ষম হবে?

যেমন GET /posts?timezone=America/Sao_Paulo?

বা ক্লায়েন্ট এপিআইতে অ্যাক্সেস করছে তা এখনও করা উচিত?

আপডেট: যেহেতু এটি কয়েকবার এসেছে: বর্তমানে টাইমজোন সহ টাইমস্ট্যাম্পগুলি ফিরে আসে (যদিও এটি সর্বদা টিজেড অফসেট থাকে +00:00)। ফর্ম্যাটটি জনপ্রিয় 8601:2015-10-29T23:00:49+00:00


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

> ক্লায়েন্ট এবং সার্ভার উভয় ক্ষেত্রেই এটি প্রয়োগ করার জন্য আমাকে অযথা জটিল জিনিস হিসাবে আঘাত করে। ইনপুট জন্য ধন্যবাদ!
চিহ্নিত করুন

উত্তর:


17

আপনার সময় মতো একটি নিখুঁত পয়েন্টটি ফিরে আসা উচিত , তারপরে যে কেউ প্রয়োজন অনুসারে সেই টাইমস্ট্যাম্প স্থানীয় করতে পারেন। "পরম টাইমস্ট্যাম্প" দ্বারা আমি একটি ইউনিক্স টাইমস্ট্যাম্প বা হিউম্যান রিডেবল টাইমস্ট্যাম্প যা মানক আইএসও ফর্ম্যাটগুলির মধ্যে টাইমজোনকে অন্তর্ভুক্ত করে, যেমন "2007-04-05T14: 30Z"। এটি প্রয়োজনীয়ভাবে ক্লায়েন্টের দ্বারা তুচ্ছভাবে স্থানীয় সময় অঞ্চলে রূপান্তরিত হতে পারে।

আপনি যদি কোনও টাইমজোন প্যারামিটারটি স্বীকার করতে চান এবং সেই টাইমজোনটি ভাল টাইমস্টোনটিতে টাইমস্ট্যাম্পের স্থানীয়করণ করতে চান তবে আপনার এখনও নিখুঁত টাইমস্ট্যাম্প Incl ব্যবহার করা উচিত। আপনার প্রতিক্রিয়াতে সময় অঞ্চল, যেমন "2007-04-05T16: 30-02: 00"। এই মানটি পূর্ববর্তী স্থানীয় অ-স্থানীয়করণের সমান, এটি আপনি কেন এই পরামিতিটি সরবরাহ করার সমস্যায় পড়তে চান তা প্রশ্নবিদ্ধ। টাইমস্ট্যাম্পের সঠিক প্রদর্শন ফর্ম্যাটটি চূড়ান্তভাবে ক্লায়েন্টের সীমানা অবধি, সুতরাং এটি সম্ভবত মানটি পোস্ট-প্রক্রিয়াজাত করবে।


4
"এটি বেশ সন্দেহজনক যে আপনি কেন সমস্যার মধ্য দিয়ে যাচ্ছেন" - যদি আর কিছুই না হয় তবে এটি কিলকের পাতলা শেষ। এই এপিআইর পরবর্তী ক্লায়েন্ট আপনাকে strftimeসুবিধার একই কারণে যে কোনও ক্লায়েন্ট সময়সীমা নির্দিষ্ট করতে দরকারী বলে মনে করেছিল তাদেরকে একটি বিন্যাস (প্লাস লোকেল, মাস / দিনের নামের জন্য) নির্দিষ্ট করতে বলতে পারে। এমনকি একমাত্র ছাড় হিসাবে টাইমজোন থাকা সত্ত্বেও, আপনি আপনার এপিআইয়ের প্রতিক্রিয়াটিকে আরও জটিল করে তুলেছেন: এটি এখন "প্রতিবারের মতো একই বিন্যাসে কেবল একটি টাইমস্ট্যাম্প" নয়, এটি "আমাকে যেভাবে এটি প্রকাশ করতে বলা হয়েছিল সেভাবে প্রকাশিত টাইমস্ট্যাম্প"
স্টিভ Jessop

3
ঠিক ঠিক জটিলতা। জটিলতা মন্দ। এটি পণ্য বা ব্যবসায়ের কোনও অতিরিক্ত মূল্য ছাড়াই প্রত্যেকে কঠোর পরিশ্রম করে। এক হাজার কাগজ কেটে মৃত্যু।
ব্র্যান্ডন

2
> সময় মতো আপনার একটি নিখুঁত পয়েন্ট ফিরে আসা উচিত আমি আমার প্রশ্নটি পরিষ্কার করে দিয়েছিলাম যে আমি এটি ইতিমধ্যে করছি। আপনার অন্তর্দৃষ্টি জন্য ধন্যবাদ!
চিহ্নিত করুন

4

আপনার যদি ইতিমধ্যে ডেটটাইম মানগুলি ব্যবহারকারীর স্থানীয় সময় অঞ্চলে রূপান্তর করার যুক্তি থাকে তবে আপনি নিজের এপিআইতে উভয় সম্ভাবনা সরবরাহ করতে পারেন।

যদি কোনও ক্লায়েন্ট যদি অনুরোধ করে GET /postsতবে তা সবসময় ডিফল্ট টাইমজোন (ইউটিসি) তে পেয়ে যায়।
যদি কোনও ক্লায়েন্ট যদি অনুরোধ GET /posts?timezone=America/Sao_Paulকরে তবে জবাবের সমস্ত সময় নির্দিষ্ট সময় অঞ্চলতে সামঞ্জস্য করা হবে।

এটি ক্লায়েন্ট বাস্তবায়নের উপর নির্ভর করে যে তারা টাইম অঞ্চলগুলি দিয়ে কী করতে চায়।


2

সাধারণ আপনি কোনও এপিআই থেকে ইউটিসি আশা করবেন।

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


2

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

BTW। কতটি সময় অঞ্চল এবং কত ক্লায়েন্টের জন্য আপনি এটি পরীক্ষা করতে যাচ্ছেন? যদি সার্ভার আমেরিকা / সাও_পৌলের জন্য প্রত্যাশিত উত্তর দেয় তবে আমেরিকা / সাও_পালোর পক্ষে এটি কী প্রতিক্রিয়া জানাবে?


এটি আমার পক্ষ থেকে একটি ভুল ছিল, আমি এটি সংশোধন করেছি America/Sao_Paulo। আমার ধারণা, সময় অঞ্চলটি চিহ্নিত করতে না পারলে কী হয় তা আলোচনার জন্য প্রস্তুত; হয় এটি সম্পূর্ণ ভুল কারণ বা টিজেড ডাটাবেসটির মেয়াদ শেষ হয়ে গেছে (আমি প্রকৃত নামগুলির জন্য পরেটিরটি অসম্ভব বলে মনে করি [তবে অফসেট মানগুলির জন্য তাই নয়)। তবে, উভয় ক্ষেত্রেই আমি সম্ভবত একটি 400 BAD_REQUESTপ্রতিক্রিয়া ফিরিয়ে দেব ।
চিহ্নিত করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.