parse کردن درخواستهای JSON
تا اینجا بررسی کردیم که چطور از API خودمان پاسخهای JSON بسازیم و ارسال کنیم، اما در بخش بعدی کتاب از سمت دیگر به موضوع نگاه میکنیم و درباره این صحبت میکنیم که چطور درخواستهای JSON را از clientها بخوانیم و parse کنیم.
برای نشان دادن این موضوع، کار روی endpoint مربوط به POST /v1/movies و createMovieHandler را شروع میکنیم که قبلا تنظیم کرده بودیم.
| عملیات | Handler | الگوی URL | متد |
|---|---|---|---|
| نمایش اطلاعات application | healthcheckHandler | /v1/healthcheck | GET |
| ایجاد یک فیلم جدید | createMovieHandler | /v1/movies | POST |
| نمایش جزئیات یک فیلم مشخص | showMovieHandler | /v1/movies/:id | GET |
وقتی یک client این endpoint را صدا میزند، انتظار داریم یک request body از نوع JSON ارائه کند که شامل داده مربوط به فیلمی است که میخواهد در سیستم ما ایجاد کند. برای مثال، اگر یک client بخواهد رکوردی برای فیلم Moana به API ما اضافه کند، request bodyای شبیه این میفرستد:
{
"title": "Moana",
"year": 2016,
"runtime": 107,
"genres": ["animation", "adventure"]
}
فعلا فقط روی جنبههای خواندن، parse کردن و validation هنگام کار با این JSON request body تمرکز میکنیم. به طور مشخص، یاد میگیرید:
چطور یک request body را بخوانید و با استفاده از پکیج
encoding/jsonآن را به یک مقدار native در Go decode کنید.چطور با requestهای بد از سمت clientها و JSON نامعتبر برخورد کنید و پیامهای خطای روشن و قابل اقدام برگردانید.
چطور یک helper package قابل استفاده مجدد برای validation داده بسازید تا مطمئن شوید با business ruleهای شما سازگار است.
تکنیکهای مختلف برای کنترل و سفارشیسازی نحوه decode شدن JSON.