Bmob Backend Cloud — Point d'Entrée Principal
Bmob est une plateforme BaaS (Backend as a Service) qui offre une base de données NoSQL, un système d'utilisateurs, un stockage de fichiers, des fonctions cloud, des notifications push, des SMS, des paiements, de la messagerie instantanée et de l'IA, le tout prêt à l'emploi. Les clients couvrent JavaScript / Android / iOS / Swift / Flutter / HarmonyOS / mini-programmes / Python / Go / PHP / C#, ainsi que l'API REST indépendante du langage et le serveur MCP.
Ordre de routage : suivez d'abord l'arbre de décision ci-dessous → consultez ensuite la table de routage (choisissez le sous-skill) → pour les opérations spécifiques, référez-vous à shared/operation-routing.md (tableau à trois voies : MCP / curl / SDK·REST).
Principes Fondamentaux
1. Vérifiez toujours la plateforme avant d'écrire du code. Les API SDK de Bmob diffèrent considérablement selon la plateforme (JS utilise Bmob.Query, Android extends BmobObject, iOS ancien BmobObject objectWithClassName, Swift pur try await BmobObject.save(), REST utilise HTTP /1/classes/<name>). N'insérez pas de code JS dans une réponse d'un skill Android. Identifiez d'abord la plateforme / framework de l'utilisateur, puis lisez le sous-skill correspondant.
2. Ne divulguez jamais la Master Key en frontend. La console Bmob → Clés d'application contient quatre valeurs :
| Clé | Niveau de sécurité | Cas d'utilisation |
|---|---|---|
| Application ID | Public | Tous les clients |
| REST API Key | Semi-public | Navigateur / mini-programme / mobile / serveur |
| Secret Key | Moyen | Client avec code de sécurité (SecurityCode) pour autorisation chiffrée |
| Master Key | Maximum | Serveur / scripts backend uniquement, jamais dans le bundle frontend |
3. Consultez le changelog avant d'écrire du code. Les SDK évoluent et les signatures de méthodes changent. Avant de commencer une tâche, utilisez l'URL brute pour récupérer le update_log.md de la plateforme correspondante (chemin dans metadata.docs_raw du sous-skill) pour vérifier l'absence de changements cassants.
4. Ne répétez pas les erreurs en boucle. Après 2-3 tentatives échouées de la même manière, arrêtez-vous et réévaluez :
- HTTP 4xx : consultez d'abord le
codedans le corps de la réponse avecbmob-error-codes. - Erreurs de permission / ACL (9015, 9016 etc.) : voir le chemin temporaire P1 ci-dessous ou le futur
bmob-acl-and-roles. - "Méthode introuvable" : la version du SDK est peut-être trop ancienne ou la documentation ne correspond pas à la version utilisée. Comparez avec la page des releases du dépôt.
Arbre de Décision d'Entrée (suivez d'abord)
flowchart TD
Start([L'utilisateur mentionne Bmob]) --> Err{La réponse contient-elle un code d'erreur ?}
Err -->|Oui| EC[bmob-error-codes]
Err -->|Non| Ship{Le code doit-il être inclus dans l'application en production ?}
Ship -->|Non| McpCfg{L'IDE a-t-il configuré Bmob MCP ?}
McpCfg -->|Oui| MCP[bmob-mcp<br/>9 outils appelables]
McpCfg -->|Non| RestOnly[bmob-database-restful<br/>ou generate_code nécessite MCP]
Ship -->|Oui| Plat{Plateforme / Langage ?}
Plat -->|JS Web Node Mini-programme Cocos JS etc.| JS[bmob-database-javascript]
Plat -->|Android Kotlin Java| AND[bmob-database-android]
Plat -->|Pure Swift BmobSwiftSDK async/await| SWIFT[bmob-database-swift]
Plat -->|Legacy iOS ObjC Swift Bridging Header| IOS[bmob-database-ios]
Plat -->|Flutter Dart| FLUT[bmob-database-flutter]
Plat -->|curl Python Go PHP Backend etc.| REST[bmob-database-restful]
Plat -->|RN Uni-app JS Bridge| JS
JS --> Schema{Besoin des vrais noms de champs ?}
AND --> Schema
SWIFT --> Schema
IOS --> Schema
FLUT --> Schema
REST --> Schema
Schema -->|Oui et MCP configuré| MCP
Schema -->|Non| Done([Lire le sous-skill correspondant et écrire le code])
MCP --> OpTable[[shared/operation-routing.md<br/>Tableau des trois voies par opération]]
Table de Routage (une fois la cible déterminée, lisez immédiatement le sous-skill correspondant)
| Intention de l'utilisateur | Indice de plateforme | Routage vers |
|---|---|---|
| Créer / voir la structure d'une table, ajouter des données de test, générer un squelette curl, opérations pratiques sur la base de données | — | bmob-mcp (condition : l'utilisateur a configuré MCP) |
| Déploiement one-click d'un site / hébergement statique (HTML ou dist vers CDN) | — | bmob-mcp → deploy_static_site (ou generate_code uniquement pour générer curl) |
| CRUD NoSQL, requêtes conditionnelles | JS / TS / Web / Node / Mini-programmes WeChat/Alipay/ByteDance/QQ/Baidu / Quick Apps / Cocos Creator JS / Electron / Tauri / Apps hybrides | bmob-database-javascript |
| CRUD NoSQL | Android / Kotlin / Java | bmob-database-android |
| CRUD NoSQL | SDK Swift pur / BmobSwiftSDK / SPM / import BmobSDK / async/await | bmob-database-swift |
| CRUD NoSQL | Ancien SDK iOS / Objective-C / Swift Bridging Header / BmobSDK.xcframework / saveInBackground | bmob-database-ios |
| CRUD NoSQL | Flutter / Dart (bmob_plugin) | bmob-database-flutter |
| CRUD NoSQL / tout langage sans SDK | curl / Python / Go / PHP / C# / Rust / Ruby / Java backend | bmob-database-restful |
| React Native / Uni-app (couche JS utilisant Bmob) | — | bmob-database-javascript ou REST |
| HarmonyOS ArkTS | — | bmob-database-restful + BmobDocs |
| Inscription utilisateur / Connexion / Vérification SMS / Connexion tierce / Vérification email | Toutes plateformes | bmob-auth-{platform} (P1, voir tableau ci-dessous) |
| Téléchargement / téléversement de fichiers / CDN | Toutes plateformes | bmob-storage-{platform} (P1, voir tableau ci-dessous) |
| Appel d'une fonction cloud | Toutes plateformes | bmob-cloud-function-{platform} (P1, voir tableau ci-dessous) |
| Écriture de code de fonction cloud s'exécutant sur les serveurs Bmob | — | bmob-cloud-function-development |
| ACL / Rôles / Permissions / Sécurité au niveau de la ligne | — | bmob-acl-and-roles (P1, voir tableau ci-dessous) |
| Requête BQL (syntaxe similaire à SQL) | Toute | bmob-bql (P1, voir tableau ci-dessous) |
| Diagnostic des erreurs code 9015 / 101 / 105 etc. | — | bmob-error-codes |
| Push / SMS / Paiement | Toutes plateformes | bmob-push-* / bmob-sms-* / bmob-pay-* (P2) |
Pour savoir quelle voie utiliser pour les opérations spécifiques (CRUD, connexion, téléversement, déploiement), consultez shared/operation-routing.md.
Chemin Temporaire pour P1 / P2 Non Encore Publiés
Lorsque le sous-skill dédié n'est pas installé, n'attendez pas, utilisez ce tableau de repli :
| Intention de l'utilisateur | Skill cible (non publié) | Alternative actuellement disponible |
|---|---|---|
| Inscription / Connexion / Code de vérification SMS | bmob-auth-* | REST : bmob-database-restful/references/users.md ; MCP configuré : generate_code (inscription / connexion par identifiant-mot de passe / connexion par code de vérification téléphone etc.) |
| Téléversement de fichier / URL CDN | bmob-storage-* | REST : references/files.md ; MCP : generate_code → téléverser fichier |
| Appel d'une fonction cloud existante | bmob-mcp → invoke_cloud_function (exécution) ; generate_code → appeler fonction cloud (curl) | REST /1/functions/<name> ; SDK de chaque plateforme |
| Écrire et déployer le code source d'une fonction cloud | bmob-cloud-function-development | MCP configuré : deploy_cloud_function → invoke_cloud_function ; MCP non configuré : BmobDocs + console |
| ACL / Permissions ligne / 9015·9016 | bmob-acl-and-roles | REST : inclure "ACL":{...} dans le corps de création/mise à jour ; bmob-error-codes |
| BQL / Agrégation cross-table | bmob-bql | REST GET /1/cloudQuery ; bmob-database-restful |
| Push / SMS / Paiement | Skills P2 | Module REST correspondant + arborescence mds de BmobDocs |
Checklist de Sécurité Générale (incluse par tous les sous-skills)
- La table cible pour les opérations d'écriture doit être configurée avec une ACL, sinon tout utilisateur peut modifier n'importe quelle ligne (voir la ligne ACL dans le chemin temporaire P1).
- Navigateur / mini-programme / mobile peuvent utiliser REST API Key (autorisation simplifiée / mode SDK B) ou Secret Key + Code de sécurité (autorisation chiffrée / mode SDK A) ; n'utilisez jamais la Master Key.
- Le
SecurityCodedans les scénarios d'autorisation chiffrée n'est pas transmis sur le réseau ; ne le codez pas en dur dans le bundle frontend, injectez-le via des variables d'environnement ou placez-le dans un BFF. - Pour les opérations batch / scan complet de table / requêtes cross-table → privilégiez BQL plutôt que des appels SDK en boucle.
- En cas d'erreur, consultez d'abord le champ
codedans le corps de la réponse viabmob-error-codes, ne devinez pas. - Le champ mot de passe utilisateur (
password) ne peut être écrit que par Bmob, pas mis à jour ; pour changer de mot de passe, utilisez/1/updateUserPassword/<objectId>.
FAQ et Anti-Patterns
- Problèmes courants cross-plateforme (routage, clés, MCP, format de données) :
shared/faq.md - Anti-patterns typiques (ACL, Master Key, mauvaise utilisation du 9015 etc.) :
shared/anti-patterns.md - Recherche du code numérique à partir du message d'erreur anglais :
bmob-error-codestableau « Recherche par phénomène » en haut
Recettes de Cas d'Utilisation
Scénarios de bout en bout (conception de table + ACL + flux), puis entrez dans le skill de la plateforme pour écrire le code :
| Scénario | Recette |
|---|---|
| Blog / CMS (Article + Author) | shared/recipes/blog-cms.md |
| Todo personnel de l'utilisateur (ACL au niveau ligne) | shared/recipes/user-owned-todos.md |
| Connexion mini-programme WeChat | shared/recipes/mini-program-login.md |
| Téléversement d'avatar | shared/recipes/avatar-upload.md |
| Migration batch côté serveur | shared/recipes/server-migration.md |
| Déploiement site statique via MCP | shared/recipes/static-site-deploy.md |
Méthode de Recherche dans la Documentation
Les references/snippets/ de chaque sous-skill (synchronisés par les commits de BmobDocs) et les references/*.md rédigés manuellement couvrent la plupart des API. Si insuffisant, récupérez la documentation en amont :
-
Localisation par nom de fichier : l'arborescence de la documentation en amont se trouve sur github.com/bmob/BmobDocs/tree/master/mds, organisée par
<feature>/<platform>/. -
Récupération directe par l'agent (contourne la couche de rendu GitHub) :
https://raw.githubusercontent.com/bmob/BmobDocs/master/mds/<feature>/<platform>/<filename>.mdDéjà vérifié : peut être récupéré directement en markdown pur par l'outil WebFetch.
-
Lister le répertoire (si le nom du fichier est inconnu) :
https://api.github.com/repos/bmob/BmobDocs/contents/mds/<feature>/<platform> -
Toujours introuvable : allez sur https://www.bmobapp.com/docs/.
Collaboration avec MCP (Critique)
Si l'utilisateur a configuré le serveur MCP Bmob dans son IDE (voir shared/mcp-install-snippets.md), toute tâche impliquant « lire la vraie structure d'une table / écrire des données de test / concevoir un schéma / générer un squelette curl / déployer un site one-click » doit prioriser MCP, ne devinez pas les noms de champs.
tools/listcomporte 10 outils ; l'agent n'appelle que 9 d'entre eux (get_project_tables,create_table,add_single_data,update_single_data,delete_single_data,generate_code,deploy_cloud_function,invoke_cloud_function,deploy_static_site).mcp_endpoint_mcp_postest une boucle interne du serveur, ne l'appelez pas.- Correspondance entre paramètres des outils et formulations :
bmob-mcp; tableau des trois voies par opération :shared/operation-routing.md.
flowchart LR
User[Prompt utilisateur mentionnant Bmob] --> Root[bmob root SKILL.md]
Root --> OpRoute[shared/operation-routing.md]
Root -->|"schéma / CRUD en direct / déploiement"| McpSkill[bmob-mcp]
Root -->|JS / Web / Mini-programme| JsDb[bmob-database-javascript]
Root -->|Android / Kotlin| AndDb[bmob-database-android]
Root -->|SDK Swift pur| SwiftDb[bmob-database-swift]
Root -->|Legacy iOS / ObjC| IosDb[bmob-database-ios]
Root -->|Flutter / Dart| FlutDb[bmob-database-flutter]
Root -->|curl / Python / Go| RestDb[bmob-database-restful]
Root -->|code d'erreur| Err[bmob-error-codes]
McpSkill -.get_project_tables.-> JsDb
McpSkill -.get_project_tables.-> AndDb
McpSkill -.get_project_tables.-> SwiftDb
McpSkill -.get_project_tables.-> IosDb
McpSkill -.get_project_tables.-> FlutDb
McpSkill -.get_project_tables.-> RestDb
Résumé en Une Phrase
L'utilisateur mentionne Bmob → lisez l'arbre de décision d'entrée de ce skill → choisissez le sous-skill dans la table de routage → sélectionnez MCP / curl / SDK·REST via
shared/operation-routing.md; le code spécifique à la plateforme se trouve dansreferences/et le SKILL.md du sous-skill.