J'ai une application Ruby sur Rails avec User_Controller généré via Scanfold. Le modèle P> {
"api/v1/user": {
"id": 2,
"phone": "999999999",
"first_name": "Rajan",
"email": "sample@h.com",
"dob": "2000-01-01",
"last_name": "Verma",
"gender": "male",
"otp_code": "503036"
}
}
3 Réponses :
Il semble donc qu'il semble Donc, vous définissez la touche code> racine code> de votre contrôleur. p> ou si vous ne voulez jamais inclure le nom complet de votre sérieliseur, vous pouvez créer un sérialiseur de base p> activemodel :: sériializer code> utilise le nom du modèle complet comprenant des modules comme clé racine, voir
J'ai eu l'idée .. mais il donne méthode indéfinie racine 'pour API :: V1 :: usersiorializer: classe code>.
Ah vous avez raison, la racine doit être définie dans le contrôleur. Je pense que j'irais avec la deuxième option et implémenteriez un sérialisateur de base.
La raison pour laquelle cela se produit est que votre modèle est Êtes-vous sûr d'avoir besoin de versions dans votre modèle? P>
peut-être avoir un modèle Si vous souhaitez également avoir l'espace de noms code> VX code> sur vos modèles, vous pouvez remplacer le API :: V1 :: Utilisateur Code> Lequel a probablement été autogogénéisé par l'échafaud. P>
utilisateur code> et appliquer la version de réception de noms sur uniquement dans vos contrôleurs et vos itinéraires suffira à votre application. P>
json_key code> comme Christian Bruckmayer suggère, soit à tous les sérialiseurs, soit explicitement à
API :: V1 :: usersiorializer code> p> p>
Oui, je ne pense pas que nous ayons besoin de la version des modèles. J'ai supprimé ça ..
Qu'est-ce que https://github.com/bsm/serialization_scopes faire là-bas? La ligne Serialization_Scope: View_Context Code> Pourrait être supprimé Non? P>
C'est pour accéder à Current_User et à d'autres méthodes d'assistance dans Serializer ... sans pertinence pour cette question. J'ai oublié de supprimer
Utilisez-vous
ActiveModel :: sériializer code>?
Oui. Est-ce faux?
Non, ça va, il n'y a que des libs de sérialisation différentes et selon laquelle vous utilisez la réponse est différente.
Ne pas être « ce gars-là », mais avez-vous essayé github.com/fast-jsonapi/fast_jsonapi Gem au lieu d'ASM? Si vous êtes au stade précoce, cela peut être utile de changer car il est beaucoup plus rapide.
@Tomharevey ASM a des problèmes que je connais ... mais JSON_API est horrible .. J'ai passé des mois sur cette fixation manuellement .. Comment ce gemme peut être si pupulaire. JSON_API n'a pas de problème compliqué la rythme simple des réponses. Pour afficher une liste, vous devez créer des demandes indépendantes d'identifiant correspondant qui peut être facilement imbriquée dans un seul objet.
De plus, si vous essayez d'intégrer des relations, ils vont toujours dans un objet séparé. Pourquoi? Vous avez toutes les données dans un seul objet, vous devez toujours écrire un code supplémentaire pour les cartographier. Et si vous voulez développer pour mobile ... Avoir 2 références simples rendez votre objet nié 7 niveau de profondeur .. qui veut cela dans le monde réel .. ?? Regardez ce commentaire et thread Github.com/netflix/fast_jsonapi/issues/ ...
Je vois; Vous ne voulez pas que la spécification JSONAPI, assez juste. Si vous suivez cette spécification, le gemme est bon, sinon pas si
JSON_API SPEC est juste pour les cadres frontales. Mais pour les applications mobiles nidifiant que beaucoup de profondeur tue la performance.