پیام های خطای در سرویس های رست

19 views
Skip to first unread message

Mohammad Reza Kargar

unread,
Nov 7, 2016, 5:36:52 AM11/7/16
to softwa...@googlegroups.com
سلام دوستان
ما یکسری سرویس رست داریم که برای سایت خودمون  و چند تا اپ موبایل استفاده میکنم. همچنین این سرویس های رو به یکسری نماینده که اونا هم اپ و سایت خودشون رو دارن ارايه میدیم. سوال من در مورد پیام های خطاست که سرویس ها برمیگردونند. آیا باید بحث لوکالایز کردن پیام ها سمت سرور انجام بشه یا اینکه یکسری کد خطا تعریف بشه و کلاینت ها خودشون نمایش خطالا رو هندل کنند؟  سوالمو برای زمانی که اصلا چند زبانی هم مطرح نباشه لطفا جواب بدین. یا این قضیه سلیقه ای هست؟

ممنون

soroosh sarabadani

unread,
Nov 7, 2016, 5:59:38 AM11/7/16
to softwa...@googlegroups.com
سلام

حتی اگر چند زبانی هم مهم نباشه. در اکثر مواقع بهتره که این کار رو سمت سرور انجام بدید. این کار حداقل سه مزیت بزرگ براتون داره.

۱. اگر هر کلاینت بخواد خودش متن رو بر اساس کد نمایش بده احتمال داره که ناسازگاری بین متن پیام و کد و یا اشکال نگارشی بر روی بعضی از کلاینتها پیش بیاد.

۲. موقع طراحی API ها باید تلاش کنید تا جای ممکن API های شما backward-compatible و forward-compatible  باشه.  انجام این کار سمت سرور موجب میشه که API شما پتانسیل forward-compatible بودن رو داشته باشه. 

۳. برگرداندن کدی که نیاز به ترجمه داره فهم مقادیر بازگشتی رو برای برنامه نویس سخت میکنه و همیشه باید از روی مستندات متوجه بشه که اون کد به چه معنیه.



--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.
برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

Fatemeh Chitforoush

unread,
Nov 7, 2016, 6:03:38 AM11/7/16
to softwa...@googlegroups.com
سلام

علاوه بر مواردی که گفتند، اقلا در اپلیکیشن های مبایل هزینه تغییر و به روزرسانی خیلی زیاده، بردنش سمت کلاینت این هزینه رو هم بیشتر میکنه و flexibility رو هم ازتون میگیره.

-- چیت فروش

Hamed Hatami

unread,
Nov 7, 2016, 6:14:17 AM11/7/16
to softwa...@googlegroups.com

با سلام

شما توی ساختار پیامتون از سمت کلاینت و اپ میتونید با ارسال کد های مشخصی یه سمت سرور و داشتن یک دیکشنری معادل کد ها و شرح ها مت سرور این مسئله رو اداره کنید


--

omidpourhadi

unread,
Nov 7, 2016, 6:29:08 AM11/7/16
to Software Taak
سلام

بهرحال نظرات مختلفه ولی من پیشنهاد میکنم ببین بقیه چیکار کردن مثلا این لینک زیر
http://docs.apigee.com/api-services/content/fault-handling
این شرکت خدای طراحی ای پی آی هست هر چی گفته همونه

Mohammad Reza Kargar

unread,
Nov 7, 2016, 8:14:49 AM11/7/16
to softwa...@googlegroups.com
ممنون از پاسختون:
 مورد اول: توضیح خطاها و کد ها میتونه خیلی خوب داکیومنت بشه و در اختیار کلاینت ها قرار بگیره.
 مورد دوم: رابطه بین forward campatibily و نگه داشتن توضیح خطا در سمت سرور متوجه نشدم. بنظرم متنی که قراره به کاربر نشان داده بشه یه چیز سلیقه ای هستش. در جواب خطای لاگین هر کلاینت شاید بخاد پیام شخصی خودشو نشون بده.
مورد سه: این مورد رو ما در نظر گرفتن یه شبه توضیح مثل AUTH_FAILED میتونیم کاور کنیم. هم قابل خواندن هستش و هم توضیح مبسوط خطا نیستش. 
بنظرم شای بهترین روش روش ترکیبی باشه. هم کد و شبه توضیح ارسال بشه هم توضیح خطا   و کلاینت ها بنا به نیاز از اطلاعاتی که میخان استفاده کنند. مثلا:
{ code : 3001,
  type:   AUTH_FAILED,
   message: نام کاربری یا رمز عبور نادرست است
}

جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

soroosh sarabadani

unread,
Nov 7, 2016, 8:29:01 AM11/7/16
to softwa...@googlegroups.com
مورد ۲ به این معنیه که اگر شما یک کد جدید سمت سرور اضافه کنی کلاینت تا وقتی که به روز رسانی نشه نمیتونه اون کد رو درک کنه و پیام مناسب رو به کاربر نمایش بده. 
در مورد کدهایی مثل Permission Denied و یا Unauthorized هم بهتره از خود http code هاشون که ۴۰۳ و ۴۰۱ هستن استفاده کنید.
در واقع کد رو همیشه مشما میتونی با استفاده از Http Code  در header به کلاینت پاس بدید و نیازی نیست بخشی از payload شما باشه.
در اکثر مواقع ما میخوایم کاربر تجربه کاربری یکسانی داشته باشه به این معنی که اگر از دو کلاینت مختلف استفاده میکنه چند پیام مختلف رو مشاهده نکنه. 

حتی اگر پیچیده شدن API Contract رو هم نادید بگیریم. خیلی از وقتها هم فقط از روی کد نمیشه متن درستی رو سمت کلاینت ایجاد کرد. مگر اینکه برای کوچک ترین چیزها هم بخواید کد تعریف کنید که اون موقع پیاده سازی سمت سرور دیدنی میشه!

برای مثال یک فرم با ۵ فیلد دارید و هیچ کدوم نمیتونه خالی باشه. شما ترجیح میدی برای هر حالت خطا یک کد ایجاد کنی و کلاینت بر اساس کد پیام مناسب رو نشون بده یا ترجیح میدی متن پیام رو برای کاربر با  Http Code ۴۰۰   ارسال کنی؟

اینها فقط مزایای این روش هستن و ممکنه شما برای یه پروژه صلاح بدونی به روش دیگه ای پیاده سازی و انجام بدید.

}

جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

Mohammad Reza Kargar

unread,
Nov 7, 2016, 9:10:32 AM11/7/16
to softwa...@googlegroups.com
در مورد مثالتون خوب مثلما به ازای هر فیلد کد درنظر گرفته نمیشه. برای خطای missing_param یک کد در نظر گرفته میشه و نام فیلد در پی لود در نظر گرفته میشه. code 400 خیلی جنرال هستش برای این مورد و صرفا میتونه بعنوان http status code ست بشه. 
یکی از کانسرن های ما اینه که میخایم به  third party  های زیادی سرویس بدیم و اینکه اونا احتمالا بخان پیام ها رو کاستوم کنند. 

}

جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

Hamed Hatami

unread,
Nov 7, 2016, 9:13:13 AM11/7/16
to softwa...@googlegroups.com

خوب به راحتی میتوانید استراکچر خطایی درست کنید که زمان رخداد یک xml و یا json تولید بشه که از سمت سرور حاوی کد خطا و شرح فارسی و انگلیسی خطا باشه


}

جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

soroosh sarabadani

unread,
Nov 7, 2016, 9:19:59 AM11/7/16
to softwa...@googlegroups.com
برای اینجور مواقع IETF یک پیشنهاد برای Content-Type داره به نام application/problem+json که میتونید از اون استفاده کنید. 



}

جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taak+unsubscribe@googlegroups.com ارسال کنید.

Mohammad Reza Kargar

unread,
Nov 7, 2016, 10:42:41 AM11/7/16
to softwa...@googlegroups.com
یجورایی داشتیم این rfc رو خودمون پیاده سازی میکردیم ;). ممنونم سروش و بقیه دوستان.

}

جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.

برای گزینه‌های بیشتر از https://groups.google.com/d/optout بازدید کنید.

--
این ایمیل در قالب پروژه دانش آزاد تاک فرستاده می شوند برای اطلاعات بیشتر به وب سایت پروژه مراجعه کنید.
http://www.taakestan.com
http://www.facebook.com/Taakestan
---
‏این پیام را به خاطر این دریافت کردید که برای مبحثی در گروه «Software Taak» در ‏گروه Google ثبت‌نام شده‌اید.
جهت لغو اشتراک از این گروه و قطع دریافت رایانامه از آن، رایانامه‌ای به software-taa...@googlegroups.com ارسال کنید.
Reply all
Reply to author
Forward
0 new messages