یه تکنولژی که چندین سال هست جای خودش رو باز کرده JSON API هست که عموما هم با REST API در کنار هم قرار می گیرن. تو این پست خیلی دوست دارم در این مورد با هم صحبت کنیم. پست ممکنه طولانی شه واسه همین کم کم می نویسم.
JSON فرمتی هست که شاید به چشم انسان خوب و خونا بیاد اما از دید ماشین بسیار بد، بدون قانون و نسبتا سنگین هست. عدم وجود تایپ و schema برای داده ها (یه سری کتابخونه برای این کار هست که در مقایسه با فرمت های دیگه چنگی به دل نمی زنن) جزء بزرگترین مشکلات json هستند. برای مثال json چیزی در باره تاریخ نمی دونه واسه همین شما مجبورین تاریخ رو به صورت string در json ذخیره کنید. با این کار شما validation روی تاریخ رو از دست می دید و ممکن هست هر سرویس به روش خودش تاریخ رو ذخیره کنه و غیره …
یه مشکل دیگه ای که json داره حجم زیادش هست. ( البته در مقایسه با فرمت های قدیمی مثل XML خیلی سبک تر هست) فرض کنید یک لیست با ۵۰ تا hashmap رو که هر کدوم ۱۰ تا کلید ثابت دارند رو تو فرمت json بخواید جا بجا کنین. شما مجموعا برای هر کلید ۵۰ تا تکرار دارید و در کل ۵۰۰ بار تکرار ( می دونم اعداد و اینها باهم جور در نمیاد اما فکر می کنم منظور رو رسونده باشم.) این همه تکرار حجم json رو بالا می بره اونم با دیتا ای که شما نیازی بهش ندارید.
اینا یه سری از بدی های json بودن که به نظر من به اندازه ای هست که باعث شه ازش برای جابجایی یا ذخیره دیتا استفاده نکنیم. حداقل هر جایی که ارتباط ماشین با ماشین هست.
تنهای خوبی json اینه که توی browser به صورت native ساپورت می شه و نیاز به کتابخونه اضافی برای پردازشش نیست.
اما جایگزین های json چه چیزایی هستند؟
بشتگی به کاربرد داره اما در حالت کلی:
- Avro
- Protocol Buffers
- Thrift
- Transit
- EDN
- …