ការយោងគ្រប់គ្រងនៃកូដកំហុសទាំងអស់នៅក្នុង Blue GraphQL API ដែលរៀបចំតាមប្រភេទ
របៀបឆ្លើយតបកំហុស
API GraphQL របស់ Blue បញ្ជូនកំហុសក្នុងទ្រង់ទ្រាយស្តង់ដារតាមការបញ្ជាក់ GraphQL។ នៅពេលដែលកំហុសកើតឡើង ការឆ្លើយតបនឹងរួមបញ្ចូល errors
ដែលមានព័ត៌មានលម្អិតអំពីអ្វីដែលកើតមានកំហុស។
ឧទាហរណ៍ការឆ្លើយតបកំហុស
{
"errors": [
{
"message": "Todo was not found.",
"extensions": {
"code": "TODO_NOT_FOUND"
}
}
]
}
រចនាសម្ព័ន្ធកំហុស
អង្គភាពកំហុសមួយៗមាន៖
- សារប្រាប់: ការពិពណ៌នាដែលអាចអានបានដោយមនុស្សអំពីកំហុស
- extensions.code: កូដកំហុសដែលអាចអានបានដោយម៉ាស៊ីនសម្រាប់ការដោះស្រាយកម្មវិធី
សុវត្ថិភាពកំហុសផលិតកម្ម
Blue បានអនុវត្តប្រព័ន្ធសុវត្ថិភាពសម្រាប់ការបង្ហាញកំហុស៖
- កំហុសសុវត្ថិភាព: បង្ហាញកូដនិងសារពិតប្រាកដទៅកាន់អតិថិជន
- កំហុសមិនសុវត្ថិភាព: បញ្ជូន
INTERNAL_SERVER_ERROR
ទូទៅដើម្បីលាក់ព័ត៌មានអារម្មណ៍
- មិនអាចរកឃើញធនធាន: កំហុសទាំងអស់
*_NOT_FOUND
ត្រូវបានចាត់ទុកថាសុវត្ថិភាពនិងតែងតែបង្ហាញ
ប្រភេទកំហុស
Blue បានកំណត់កូដកំហុសផ្ទាល់ខ្លួន ១០៨ ដែលរៀបចំជាក្រុមដូចខាងក្រោម៖
កំហុសសំរាប់ការផ្ទៀងផ្ទាត់ និងការអនុញ្ញាត
កូដកំហុស |
សារ |
ការពិពណ៌នា |
UNAUTHENTICATED |
"ត្រូវការការផ្ទៀងផ្ទាត់។" |
ការស្នើសុំត្រូវការការផ្ទៀងផ្ទាត់ប៉ុន្តែមិនមានការផ្តល់ជូន |
FORBIDDEN |
"អ្នកមិនមានសិទ្ធិទេ។" |
បានផ្ទៀងផ្ទាត់ប៉ុន្តែខ្វះសិទ្ធិដែលត្រូវការ |
កំហុសមិនអាចរកឃើញធនធាន (សរុប ៥២)
ធនធានមូលដ្ឋាន
កូដកំហុស |
សារ |
ការពិពណ៌នា |
TODO_NOT_FOUND |
"Todo មិនត្រូវបានរកឃើញ។" |
កំណត់ត្រា/todo មិនមានឬអ្នកប្រើមិនមានសិទ្ធិចូល |
TODO_LIST_NOT_FOUND |
"បញ្ជី Todo មិនត្រូវបានរកឃើញ។" |
បញ្ជីមិនមានឬអ្នកប្រើមិនមានសិទ្ធិចូល |
PROJECT_NOT_FOUND |
"គម្រោងមិនត្រូវបានរកឃើញ។" |
គម្រោងមិនមានឬអ្នកប្រើមិនមានសិទ្ធិចូល |
COMPANY_NOT_FOUND |
"ក្រុមហ៊ុនមិនត្រូវបានរកឃើញ។" |
ក្រុមហ៊ុនមិនមានឬអ្នកប្រើមិនមានសិទ្ធិចូល |
USER_NOT_FOUND |
"អ្នកប្រើមិនត្រូវបានរកឃើញ។" |
អ្នកប្រើមិនមាននៅក្នុងប្រព័ន្ធ |
កូដកំហុស |
សារ |
ការពិពណ៌នា |
CUSTOM_FIELD_NOT_FOUND |
"វាលផ្ទាល់ខ្លួនមិនត្រូវបានរកឃើញ។" |
វាលផ្ទាល់ខ្លួនមិនមាន |
CUSTOM_FIELD_OPTION_NOT_FOUND |
"ជម្រើសវាលផ្ទាល់ខ្លួនមិនត្រូវបានរកឃើញ។" |
ជម្រើសវាលមិនមាន |
FORM_NOT_FOUND |
"Form មិនត្រូវបានរកឃើញ។" |
គំរូ Form មិនមាន |
FORM_FIELD_NOT_FOUND |
"វាល Form មិនត្រូវបានរកឃើញ។" |
វាល Form មិនមាន |
គ្រឿងផ្សំគម្រោង
កូដកំហុស |
សារ |
ការពិពណ៌នា |
TAG_NOT_FOUND |
"ស្លាកមិនត្រូវបានរកឃើញ។" |
ស្លាកមិនមាននៅក្នុងគម្រោង |
AUTOMATION_NOT_FOUND |
"ការប្រព្រឹត្តអូតូម៉ាទ័រ មិនត្រូវបានរកឃើញ។" |
ច្បាប់អូតូម៉ាទ័រមិនមាន |
CHART_NOT_FOUND |
"តារាងមិនត្រូវបានរកឃើញ។" |
តារាងផ្ទាំងគ្រប់គ្រងមិនមាន |
WEBHOOK_NOT_FOUND |
"Webhook មិនត្រូវបានរកឃើញ។" |
ការកំណត់ Webhook មិនមាន |
TEMPLATE_NOT_FOUND |
"គំរូមិនត្រូវបានរកឃើញ។" |
គំរូគម្រោងមិនមាន |
មតិយោបល់ និងសកម្មភាព
កូដកំហុស |
សារ |
ការពិពណ៌នា |
COMMENT_NOT_FOUND |
"មតិយោបល់មិនត្រូវបានរកឃើញ។" |
មតិយោបល់មិនមាន |
ACTIVITY_NOT_FOUND |
"សកម្មភាពមិនត្រូវបានរកឃើញ។" |
កំណត់ត្រាសកម្មភាពមិនមាន |
REACTION_NOT_FOUND |
"ការឆ្លើយតបមិនត្រូវបានរកឃើញ។" |
ការឆ្លើយតបមតិយោបល់មិនមាន |
ធនធានផ្សេងទៀត
កូដកំហុស |
សារ |
ការពិពណ៌នា |
FILE_NOT_FOUND |
"ឯកសារមិនត្រូវបានរកឃើញ។" |
ការភ្ជាប់ឯកសារមិនមាន |
SUBSCRIPTION_NOT_FOUND |
"ការជាវមិនត្រូវបានរកឃើញ។" |
ការជាវវិក័យប័ត្រមិនមាន |
INVOICE_NOT_FOUND |
"វិក័យប័ត្រមិនត្រូវបានរកឃើញ។" |
កំណត់ត្រាវិក័យប័ត្រមិនមាន |
CHECKLIST_NOT_FOUND |
"បញ្ជីត្រួតពិនិត្យមិនត្រូវបានរកឃើញ។" |
បញ្ជីត្រួតពិនិត្យមិនមាន |
CHECKLIST_ITEM_NOT_FOUND |
"ធាតុបញ្ជីត្រួតពិនិត្យមិនត្រូវបានរកឃើញ។" |
ធាតុបញ្ជីត្រួតពិនិត្យមិនមាន |
PROJECT_ROLE_NOT_FOUND |
"តួនាទីគម្រោងមិនត្រូវបានរកឃើញ។" |
តួនាទីគម្រោងផ្ទាល់ខ្លួនមិនមាន |
PROJECT_ACCESS_NOT_FOUND |
"ការចូលដំណើរការគម្រោងមិនត្រូវបានរកឃើញ។" |
ការចូលដំណើរការគម្រោងរបស់អ្នកប្រើមិនមាន |
NOTIFICATION_NOT_FOUND |
"ការជូនដំណឹងមិនត្រូវបានរកឃើញ។" |
ការជូនដំណឹងមិនមាន |
DASHBOARD_NOT_FOUND |
"ផ្ទាំងគ្រប់គ្រងមិនត្រូវបានរកឃើញ។" |
ផ្ទាំងគ្រប់គ្រងមិនមាន |
KEY_NOT_FOUND |
"កូនសោមិនត្រូវបានរកឃើញ។" |
កូនសោការកំណត់មិនមាន |
កំហុសផ្ទៀងផ្ទាត់
កូដកំហុស |
សារ |
ការពិពណ៌នា |
BAD_USER_INPUT |
"ការបញ្ចូលមិនត្រឹមត្រូវ។" |
ការបរាជ័យផ្ទៀងផ្ទាត់ការបញ្ចូលទូទៅ |
VALIDATION_ERROR |
"ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវ" |
ប៉ារ៉ាម៉ែត្រស្នើសុំបានបរាជ័យក្នុងការផ្ទៀងផ្ទាត់ |
BAD_EMAIL |
"អ្នកត្រូវការបញ្ចូលអ៊ីមែលដែលត្រឹមត្រូវ។" |
ទម្រង់អ៊ីមែលមិនត្រឹមត្រូវ |
INVALID_IDS |
"IDs មិនត្រឹមត្រូវ។" |
ID មួយឬច្រើននៅក្នុងសំណើមិនត្រឹមត្រូវ |
PHONE_INVALID |
"ទូរស័ព្ទមិនត្រឹមត្រូវ។" |
ទម្រង់លេខទូរស័ព្ទមិនត្រឹមត្រូវ |
URL_INVALID |
"URL មិនត្រឹមត្រូវ។" |
ទម្រង់ URL មិនត្រឹមត្រូវ |
INVALID_RECURRING_DUE_DATE |
"កាលបរិច្ឆេទដែលមិនត្រឹមត្រូវសម្រាប់ភារកិច្ចកើតឡើង" |
ការផ្ទៀងផ្ទាត់កាលបរិច្ឆេទភារកិច្ចកើតឡើងបានបរាជ័យ |
INVALID_COLOR |
"ពណ៌មិនត្រឹមត្រូវ" |
តម្លៃពណ៌មិនត្រូវនឹងទម្រង់ដែលបានរំពឹងទុក |
កំហុសនៃល្បឿនអាជីវកម្ម
កំណត់ និងកំណត់
កូដកំហុស |
សារ |
ការពិពណ៌នា |
COMPANY_LIMIT |
"អ្នកបានឈានដល់កំណត់ក្រុមហ៊ុនសម្រាប់គណនីរបស់អ្នក។" |
ក្រុមហ៊ុនអតិបរិមាឈានដល់ |
PROJECT_LIMIT |
"អ្នកបានឈានដល់កំណត់គម្រោងសម្រាប់ក្រុមហ៊ុនរបស់អ្នក។" |
គម្រោងអតិបរិមាឈានដល់ |
USER_LIMIT |
"អ្នកបានឈានដល់កំណត់អ្នកប្រើសម្រាប់ក្រុមហ៊ុនរបស់អ្នក។" |
អ្នកប្រើអតិបរិមាឈានដល់ |
PROJECT_TEMPLATE_LIMIT |
"អ្នកបានឈានដល់កំណត់គំរូសម្រាប់ក្រុមហ៊ុនរបស់អ្នក។" |
គំរូអតិបរិមាឈានដល់ |
CUSTOM_FIELD_LIMIT |
"កំណត់វាលផ្ទាល់ខ្លួនបានឈានដល់។" |
វាលផ្ទាល់ខ្លួនអតិបរិមាឈានដល់ |
TODO_LIST_LIMIT |
"អ្នកបានឈានដល់កំណត់បញ្ជីសម្រាប់គម្រោងរបស់អ្នក។" |
បញ្ជីអតិបរិមាឈានដល់ |
TOO_MANY_TODOS |
"មាន Todo យ៉ាងច្រើន។" |
កំណត់កំណត់ត្រាបានឈានដល់ |
TOO_MANY_OPTIONS |
"មានជម្រើសច្រើនពេក។" |
កំណត់ជម្រើសវាលបានឈានដល់ |
MAX_FILE_SIZE |
"ទំហំឯកសារច្រើនបំផុតគឺ ៤.៨ GB" |
ទំហំឯកសារដាក់ឯកសារបានឈានដល់ |
ការប្រឈមមុខនឹងធនធាន
កូដកំហុស |
សារ |
ការពិពណ៌នា |
TAG_ALREADY_EXISTS |
"ស្លាកមានរួចហើយ។" |
ស្លាកដែលមានឈ្មោះដូចគ្នាមាននៅក្នុងគម្រោង |
COMPANY_SLUG_ALREADY_EXISTS |
"ក្រុមហ៊ុនមានរួចហើយ។" |
slug/URL របស់ក្រុមហ៊ុនត្រូវបានយកទៅហើយ |
USER_ALREADY_EXISTS |
"អ្នកប្រើមានរួចហើយ។" |
អ៊ីមែលអ្នកប្រើបានចុះឈ្មោះរួចហើយ |
ALREADY_INVITED |
"អ្នកប្រើបានអញ្ជើញរួចហើយ។" |
អ្នកប្រើមានការអញ្ជើញនៅក្នុងការពិនិត្យរួចហើយ |
USER_ALREADY_IN_PROJECT |
"អ្នកប្រើមាននៅក្នុងគម្រោងនេះរួចហើយ។" |
អ្នកប្រើមានការចូលដំណើរការគម្រោងរួចហើយ |
FILE_TYPE_NOT_ALLOWED |
"ប្រភេទឯកសារមិនអនុញ្ញាត។" |
ប្រភេទឯកសារដាក់ឯកសារមានកំណត់ |
កំហុសសិទ្ធិ និងការចូលដំណើរការ
កូដកំហុស |
សារ |
ការពិពណ៌នា |
UNABLE_TO_DELETE_ONLY_ADMIN |
"មិនអាចលុបអ្នកគ្រប់គ្រងតែមួយនៅក្នុងក្រុមហ៊ុន។" |
មិនអាចលុបអ្នកគ្រប់គ្រងចុងក្រោយ |
UNABLE_TO_UPDATE_OWNER |
"មិនអាចធ្វើបច្ចុប្បន្នភាព OWNER។" |
មិនអាចកែប្រាសិទ្ធិម្ចាស់ |
TODO_LIST_IS_HIDDEN |
"បញ្ជី Todo បានលាក់។" |
បញ្ជីលាក់ពីតួនាទីរបស់អ្នកប្រើ |
COMPANY_NOT_ACTIVE |
"ក្រុមហ៊ុនមិនសកម្មទេ។" |
ការជាវក្រុមហ៊ុនមិនសកម្ម |
PROJECT_NOT_ACTIVE |
"គម្រោងមិនសកម្មទេ។" |
គម្រោងត្រូវបានស្តារឬមិនសកម្ម |
កំហុសសុវត្ថិភាពទិន្នន័យ
កូដកំហុស |
សារ |
ការពិពណ៌នា |
UNABLE_TO_DELETE_LIST_WITH_TODOS |
"មិនអាចលុបបញ្ជីដែលមាន Todo។" |
បញ្ជីត្រូវតែទទេដើម្បីលុប |
UNABLE_TO_DELTE_FILE |
"មិនអាចលុបឯកសារ។" |
ការលុបឯកសារបរាជ័យ (មានកំហុសក្នុងកូដ) |
UNABLE_TO_MOVE_TODO |
"មិនអាចផ្លាស់ប្តូរ Todo។" |
មិនអាចផ្លាស់ប្តូរកំណត់ត្រារវាងបញ្ជី |
DEPENDENCY_HAS_DEPENDENCY |
"ការពឹងផ្អែកមានការពឹងផ្អែក" |
ការពឹងផ្អែកមូលដ្ឋានត្រូវបានរកឃើញ |
TODO_DEPENDS_ON_ITSELF |
"Todo ពឹងផ្អែកលើខ្លួនវា" |
ការពឹងផ្អែកខ្លួនឯង |
កំហុស Stripe/ការទូទាត់
កូដកំហុស |
សារ |
ការពិពណ៌នា |
STRIPE_CREATING_CUSTOMER |
"កំហុសខណៈបង្កើតអតិថិជននៅក្នុង stripe។" |
ការបង្កើតអតិថិជន Stripe បានបរាជ័យ |
STRIPE_ALREADY_SUBSCRIBED |
"បានជាវរួចហើយ។" |
មានការជាវសកម្ម |
STRIPE_MISSING_PAYMENT_METHOD |
"ខ្វះវិធីសាស្ត្រទូទាត់។" |
មិនមានវិធីសាស្ត្រទូទាត់នៅក្នុងឯកសារ |
STRIPE_CREATING_SUBSCRIPTION |
"កំហុសខណៈបង្កើតការជាវនៅក្នុង stripe។" |
ការបង្កើតការជាវបានបរាជ័យ |
STRIPE_UPDATING_SUBSCRIPTION |
"កំហុសខណៈធ្វើបច្ចុប្បន្នភាពការជាវនៅក្នុង stripe។" |
ការធ្វើបច្ចុប្បន្នភាពការជាវបានបរាជ័យ |
STRIPE_CHECKOUT_SESSION |
"កំហុសខណៈបង្កើតសម័យបង់ប្រាក់នៅក្នុង stripe។" |
ការបង្កើតសម័យបង់ប្រាក់បានបរាជ័យ |
STRIPE_CUSTOMER_PORTAL |
"កំហុសខណៈបង្កើតផតថលអតិថិជននៅក្នុង stripe។" |
ការបង្កើតសម័យផតថលបានបរាជ័យ |
STRIPE_TAX_ID |
"មិនអាចរក្សាទុកលេខសម្គាល់ពន្ធ" |
ការផ្ទៀងផ្ទាត់/រក្សាទុកលេខសម្គាល់ពន្ធបានបរាជ័យ |
PAYMENT_REQUIRED |
"ត្រូវការការទូទាត់។" |
លក្ខណៈត្រូវការការជាវសកម្ម |
NO_PAYMENT_REQUIRED |
"មិនត្រូវការការទូទាត់។" |
ការទូទាត់មិនត្រូវការសម្រាប់ប្រតិបត្តិការ |
កំហុសផ្ទៀងផ្ទាត់ និងសម័យ
កូដកំហុស |
សារ |
ការពិពណ៌នា |
INVALID_CREDENTIALS |
"អត្តសញ្ញាណមិនត្រឹមត្រូវ។" |
ឈ្មោះអ្នកប្រើ/ពាក្យសម្ងាត់មិនត្រឹមត្រូវ |
EXPIRED_RESET_TOKEN |
"កូដកំណត់ឡើងវិញបានផុតកំណត់។" |
កូដកំណត់ឡើងវិញពាក្យសម្ងាត់បានផុតកំណត់ |
OAUTH_FAILED |
"ដំណើរការបញ្ជាក់ OAuth បានបរាជ័យ។" |
ការបញ្ជាក់ OAuth បានបរាជ័យ |
SAML_NOT_ENABLED |
"SSO (SAML) មិនត្រូវបានបើក។" |
SAML SSO មិនត្រូវបានកំណត់ |
SSO_AUTO_PROVISION_DISABLED |
"ការផ្តល់ជូនដោយស្វ័យប្រវត្តិបានបិទ។" |
មិនអាចបង្កើតអ្នកប្រើ SSO ដោយស្វ័យប្រវត្តិ |
ការកំណត់ល្បឿន
ការកំណត់ល្បឿនត្រូវបានគ្រប់គ្រងដោយកញ្ចប់ graphql-rate-limit
ជាមួយការកំណត់ផ្សេងៗ៖
ប្រភេទកំណត់ |
វិនាទី |
សំណើអតិបរិមា |
អនុវត្តទៅ |
Standard |
60s |
500 |
Most queries/mutations |
Sensitive |
300s |
10 |
Password reset, auth operations |
Expensive |
60s |
20 |
Complex queries, bulk operations |
Search |
60s |
60 |
Search operations |
File Upload |
60s |
100 |
File upload operations |
នៅពេលដែលបានកំណត់ល្បឿន អ្នកនឹងទទួលបានកំហុស GraphQL ស្តង់ដាមួយដែលមានសារបង្ហាញថាកំណត់បានឈានដល់។
កំហុសប្រព័ន្ធ និងក្នុង
កូដកំហុស |
សារ |
ការពិពណ៌នា |
INTERNAL_SERVER_ERROR |
"កំហុសម៉ាស៊ីនបម្រើក្នុង។" |
កំហុសទូទៅសម្រាប់កំហុសមិនសុវត្ថិភាពក្នុងផលិតកម្ម |
UNKNOWN_ERROR |
"កំហុសអង់គ្លេសមិនស្គាល់។" |
កំហុសមិនគ្រាន់តែបានកើតឡើង |
RESOLVER_NOT_FOUND |
"Resolver មិនត្រូវបានរកឃើញ" |
Resolver GraphQL ខ្វះ |
FIELD_NOT_IN_SCHEMA |
"វាលមិនមាននៅក្នុងស្កីមា" |
វាលដែលបានស្នើមិនមាន |
អនុវត្តន៍ល្អបំផុតសម្រាប់ការដោះស្រាយកំហុស
ការដោះស្រាយនៅខាងអតិថិជន
try {
const result = await client.mutate({
mutation: CREATE_TODO,
variables: { input }
});
} catch (error) {
if (error.graphQLErrors?.length > 0) {
const errorCode = error.graphQLErrors[0].extensions?.code;
switch (errorCode) {
case 'UNAUTHENTICATED':
// Redirect to login
break;
case 'TODO_NOT_FOUND':
// Show "Record not found" message
break;
case 'VALIDATION_ERROR':
// Display validation errors
break;
default:
// Show generic error message
}
}
}
សកម្មភាពកំហុសទូទៅ
- ត្រូវការការផ្ទៀងផ្ទាត់:
UNAUTHENTICATED
- អ្នកប្រើត្រូវតែចូល
- ការអនុញ្ញាតត្រូវបានបដិសេធ:
FORBIDDEN
- អ្នកប្រើខ្វះតួនាទី/សិទ្ធិដែលត្រូវការ
- ធនធានមិនត្រូវបានរកឃើញ:
*_NOT_FOUND
- ធនធានមិនមានឬអ្នកប្រើមិនអាចចូលដំណើរការបាន
- ការផ្ទៀងផ្ទាត់បានបរាជ័យ:
VALIDATION_ERROR
, BAD_USER_INPUT
- ពិនិត្យប៉ារ៉ាម៉ែត្របញ្ចូល
- បានកំណត់ល្បឿន: ពិនិត្យក្បាលកំណត់ល្បឿន និងអនុវត្តការបញ្ឈប់
- ត្រូវការការទូទាត់:
PAYMENT_REQUIRED
- លក្ខណៈត្រូវការការជាវ
ឯកសារដែលទាក់ទង