ការភ្ជាប់ដែលល្អមិនត្រឹមដំណើរការពេលអ្វីៗរលូនទេ តែដឹងថាត្រូវធ្វើអ្វីពេលម៉ាស៊ីនមេបដិសេធសំណើផង។ អត្ថបទនេះពិភាក្សាបញ្ហាពីរដែលបណ្ដាលឱ្យការភ្ជាប់ API Kencang.in មានបញ្ហាញឹកញាប់បំផុត៖ លើសកម្រិតសំណើ និងបកស្រាយកំហុសមិនត្រឹមត្រូវ។
របៀបដែលកម្រិតសំណើដំណើរការ
កម្រិតសំណើកំណត់ចំនួនសំណើក្នុងមួយនាទីក្នុងមួយសោ API ។ គោលដៅគឺដើម្បីរក្សាស្ថេរភាពសេវាកម្មសម្រាប់អ្នកប្រើប្រាស់ទាំងអស់។ ដែនកំណត់អាស្រ័យលើ គម្រោង: Pro ទទួលបាន 60 សំណើក្នុងមួយនាទី អាជីវកម្ម 300 ក្នុងមួយនាទី; ព័ត៌មានលម្អិតមាននៅលើទំព័រ តម្លៃ។ ចំនួនកំណត់ឡើងវិញរាល់នាទី (បង្អួចថេរ) មិនមែនជាបង្អួចផ្លាស់ប្តូរទេ។
ការឆ្លើយតបនីមួយៗរួមមានបឋមកថា៖
X-RateLimit-Limit៖ ដែនកំណត់ក្នុងមួយនាទីសម្រាប់សោរបស់អ្នក។X-RateLimit-Remaining: សំណើដែលនៅសល់នៅនាទីដែលកំពុងដំណើរការ។Retry-After: មានតែនៅលើការឆ្លើយតប 429 ចំនួនវិនាទីមុនពេលអ្នកអាចព្យាយាមម្តងទៀត។ បឋមកថានេះត្រូវបានធ្វើស្តង់ដារនៅក្នុង MDN.
យុទ្ធសាស្ត្រជៀសវាងការឆ្លើយតប 429
- ដំណើរការជាក្រុមនៅខាងអ្នក។ បើត្រូវបង្កើតតំណ 500 កុំផ្ញើទាំងអស់ក្នុងពេលតែមួយ។ ដាក់ក្នុងជួរ និងដំណើរការតាមកម្រិត ដូចជា 50 ក្នុងមួយនាទីដោយចន្លោះពេលស្មើគ្នា។
- រក្សាលទ្ធផលក្នុង cache។ ទិន្នន័យដែលកម្រនឹងផ្លាស់ប្តូរ ដូចជាបញ្ជី ដូម៉ែន ឬលម្អិត តំណ មិនចាំបាច់ត្រូវបានស្នើសុំម្តងហើយម្តងទៀតទេ។
- ប្រើចំណុចបញ្ចប់បញ្ជី paginated ជំនួសឱ្យការហៅព័ត៌មានលម្អិតម្តងមួយៗ។
- តាមដាន
X-RateLimit-Remainingនិងបន្ថយល្បឿនយ៉ាងសកម្មនៅពេលជិតដល់សូន្យ។
ដោះស្រាយ 429 ដោយបង្កើនពេលរង់ចាំតាមអិចស្ប៉ូណង់ស្យែល
ពេលទទួល 429 គោរព Retry-After។ បើគ្មានបឋមកថា ប្រើ exponential backoff៖ រង់ចាំ 1, 2, 4, 8 វិនាទី បន្ថែមពេលចៃដន្យ ដើម្បីកុំឱ្យកម្មវិធីច្រើនព្យាយាមឡើងវិញនៅវិនាទីដូចគ្នា។ វិធីនេះត្រូវបានណែនាំទូលំទូលាយ រួមទាំងក្នុង ការណែនាំព្យាយាមឡើងវិញរបស់ Google Cloud.

កូដកំហុស និងអត្ថន័យ

- 400 Bad Request: តួមិនមែនជា JSON ត្រឹមត្រូវទេ ឬប៉ារ៉ាម៉ែត្រចាំបាច់ត្រូវបានបាត់។ ពិនិត្យ
Content-Typeនិងរចនាសម្ព័ន្ធទិន្នន័យសំណើ។ - 401 Unauthorized: សោ API បាត់ មិនត្រឹមត្រូវ ឬត្រូវបានដកហូត។ កុំព្យាយាមម្តងទៀត; ជួសជុលសោ។
- 403 Forbidden: មុខងារមិនរួមបញ្ចូល គម្រោង របស់អ្នកទេ ឧទាហរណ៍ ដូម៉ែនម៉ាក នៅលើ គម្រោងឥតគិតថ្លៃ ឬកូតា តំណ ប្រចាំខែគឺអស់ហើយ។
- 404 Not Found: ID តំណ មិនមាន ឬមិនមែនជារបស់គណនីរបស់អ្នក។
- 429 Too Many Requests: ដល់កម្រិតសំណើ។ រង់ចាំហើយព្យាយាមឡើងវិញ។
- 500/502/503: បញ្ហាបណ្ដោះអាសន្នខាងម៉ាស៊ីនមេ។ ព្យាយាមឡើងវិញដោយបង្កើនពេលរង់ចាំ តែអតិបរមាពីរបីដង រួចកត់ត្រាដើម្បីពិនិត្យ។
ក្រៅពីស្ថានភាព HTTP ខ្លឹមសារឆ្លើយតបតែងតែមាន error និង message។ កំហុសក្នុងសុពលភាព អាជីវកម្ម ដូចជា "ឈ្មោះតំណ ត្រូវបានប្រើប្រាស់រួចហើយ" ឬ "URL ត្រូវបានទប់ស្កាត់ថាមានគ្រោះថ្នាក់" ត្រូវបានបញ្ជូនមកវិញជាមួយនឹងស្ថានភាព 200 និង error: 1។ ដូច្នេះពិនិត្យទាំងពីរ។ ការត្រួតពិនិត្យសុវត្ថិភាពរបស់ URL ត្រូវបានពន្យល់នៅក្នុងអត្ថបទ សុវត្ថិភាព តំណខ្លី.
ការហៅឡើងវិញដោយមិនស្ទួន និងការស្ទួន
បើសំណើ POST អស់ពេលរង់ចាំក្នុងបណ្ដាញ អ្នកមិនដឹងថាតំណបង្កើតរួចឬនៅ។ ហៅឡើងវិញអាចបង្កើតតំណពីរ។ ដំណោះស្រាយគឺប្រើឈ្មោះតំណកំណត់ជាមុន (ដូចជា ID ការបញ្ជាទិញ)។ បើមានឈ្មោះតំណរួច API ឆ្លើយតបកំហុស «ឈ្មោះតំណប្រើរួច» ហើយកម្មវិធីអាចទាញយកតំណមានស្រាប់តាម endpoint ស្វែងរក ជំនួសការបង្កើតថ្មី។
ការកត់ត្រាមានប្រយោជន៍
កត់ត្រាសម្រាប់ការហៅនីមួយៗ៖ endpoint ស្ថានភាព HTTP តម្លៃ X-RateLimit-Remainingនិង message ពេលបរាជ័យ។ កុំកត់ត្រាសោ API។ កំណត់ហេតុនេះអាចបង្ហាញទម្រង់ ដូចជា 429 កើនខ្លាំងរាល់ម៉ោង 9 ព្រឹកពេល cron ដំណើរការ រួចអ្នកអាចរៀបចំពេលវេលាឱ្យរាយស្មើគ្នា។
ពេលណាគួរដំឡើងគម្រោង
បើកំណត់ហេតុបង្ហាញថាអ្នកដល់កម្រិតជាប្រចាំ ទោះបានដំណើរការជាក្រុម នោះជាបន្ទុកពិត មិនមែនកំហុសកម្មវិធីទេ។ គម្រោងអាជីវកម្មផ្ដល់ 300 សំណើក្នុងមួយនាទី និងតំណមិនកំណត់។ សម្រាប់តម្រូវការលើសពីនេះ ទាក់ទងមកយើងខ្ញុំ សម្រាប់ គម្រោង ផ្ទាល់ខ្លួន។ ឧទាហរណ៍កូដមូលដ្ឋានសម្រាប់ភាសាទាំងបីមាននៅក្នុងអត្ថបទ កូដឧទាហរណ៍ APIនិងឯកសារពេញលេញនៅ ទំព័រអ្នកអភិវឌ្ឍន៍.
សំណួរដែលសួរញឹកញាប់
តើកម្រិតសំណើគិតតាមគណនី ឬតាមសោ?
គិតតាមសោ API។ បើប្រើការភ្ជាប់ច្រើន បង្កើតសោដាច់ដោយឡែកសម្រាប់មួយៗ ដើម្បីកុំឱ្យការភ្ជាប់មមាញឹកមួយប្រើកូតារបស់ការភ្ជាប់ផ្សេង ហើយងាយអានការតាមដានការប្រើប្រាស់ក្នុងផ្ទាំងគ្រប់គ្រង។
តើសំណើដែលបដិសេធដោយ 429 ត្រូវរាប់ដែរឬទេ?
ទេ។ សំណើដែលបដិសេធដោយលើសកម្រិតមិនកាត់កូតានាទីបន្ទាប់។ ប៉ុន្តែការផ្ញើសំណើបន្តពេលត្រូវកំណត់ ខ្ជះខ្ជាយធនធាន ដូច្នេះគោរពបឋមកថា Retry-After។
តើត្រូវបង្កើនដែនកំណត់សំណើរដោយរបៀបណា?
ដំឡើងទៅគម្រោងអាជីវកម្មដើម្បីទទួល 300 សំណើក្នុងមួយនាទី។ សម្រាប់តម្រូវការលើសនេះ ដូចជាការភ្ជាប់មានតំណរាប់លាន សូមទាក់ទងយើងសម្រាប់គម្រោងផ្ទាល់ខ្លួនដែលមានកម្រិតសមស្រប។
តើកំហុស 5xx មានន័យថាតំណរបស់ខ្ញុំបាត់ទេ?
ទេ។ កំហុស 5xx បង្ហាញបញ្ហាបណ្ដោះអាសន្នក្នុងការដំណើរការសំណើ មិនមែនបាត់ទិន្នន័យ។ ព្យាយាមឡើងវិញដោយបង្កើនពេលរង់ចាំ។ បើបញ្ហាបន្តលើសពីពីរបីនាទី ពិនិត្យទំព័រស្ថានភាព ឬទាក់ទងយើង។