[RUBY] Présentation du sérialiseur n ° 9 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6

Création d'une API de tableau d'affichage avec autorisation de certification dans l'implémentation de Rails 6 # 8 seed

Introduction d'ActiveModelSerializer

En incluant un sérialiseur, vous pouvez facilement formater les données renvoyées par json.

Gemfile


...

+ # serializer
+ gem "active_model_serializers"
$ bundle

Modification des fichiers de configuration et du sérialiseur

Une fois installé, créez un sérialiseur de post-modèle et un fichier de paramètres ActiveModelSerializer.

$ rails g serializer post
$ touch config/initializers/active_model_serializer.rb

app/serializers/post_serializer.rb


# frozen_string_literal: true

#
# post serializer
#
class PostSerializer < ActiveModel::Serializer
  attributes :id
end

config/initializers/active_model_serializer.rb


# frozen_string_literal: true

ActiveModelSerializers.config.adapter = :json

app/controllers/v1/posts_controller.rb


     def index
       posts = Post.order(created_at: :desc).limit(20)
-      render json: { posts: posts }
+      render json: posts
     end
 
     def show
-      render json: { post: @post }
+      render json: @post
     end
 
     def create
       post = Post.new(post_params)
       if post.save
-        render json: { post: post }
+        render json: post
       else
         render json: { errors: post.errors }
       end
@@ -27,7 +27,7 @@ module V1
 
     def update
       if @post.update(post_params)
-        render json: { post: @post }
+        render json: @post
       else
         render json: { errors: @post.errors }
       end
@@ -35,7 +35,7 @@ module V1
 
     def destroy
       @post.destroy
-      render json: { post: @post }
+      render json: @post
     end

Une fois que vous avez fait cela, arrêtez rails s et redémarrez.

Vérifier avec curl

$ curl localhost:8080/v1/posts 
{"posts":[{"id":20},{"id":19},{"id":18},{"id":17},{"id":16},{"id":15},{"id":14},{"id":13},{"id":12},{"id":11},{"id":10},{"id":9},{"id":8},{"id":7},{"id":6},{"id":5},{"id":4},{"id":3},{"id":2},{"id":1}]}
$ curl localhost:8080/v1/posts/1
{"post":{"id":1}}

J'ai pu obtenir une liste d'identifiants car je n'ai utilisé que des identifiants dans le sérialiseur. Ajoutons maintenant le sujet et le corps.

app/serializers/post_serializer.rb


 # frozen_string_literal: true

 #
 # post serializer
 #
 class PostSerializer < ActiveModel::Serializer
-  attributes :id
+  attributes :id, :subject, :body  
 end
$ curl localhost:8080/v1/posts
{"posts":[{"id":20,"subject":"Inutile","body":"Le calmar de l'abeille. Rancune violente de sang. Les ruines cachées."},...
curl localhost:8080/v1/posts/1
{"post":{"id":1,"subject":"hello","body":"Lieutenant-général de police. Meishibokin Katamichi. Traditionnel Tokugawa super ~.

Cela semble fonctionner normalement. Exécutons également rubocop et rspec et validons s'il n'y a pas de problème.

A continué

Création d'une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 10 devise_token_auth introduite [Vers la table de sérialisation]

Recommended Posts

Présentation du sérialiseur n ° 9 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Introduction de # 10 devise_token_auth pour créer une API de tableau d'affichage avec autorisation d'authentification dans Rails 6
# 16 paramètre de stratégie pour créer une API de tableau d'affichage avec autorisation de certification dans Rails 6
Implémentation n ° 8 pour créer une API de tableau d'affichage avec autorisation de certification dans Rails 6
Introduction de l'expert n ° 15 pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Créer une API de tableau d'affichage avec autorisation de certification dans la mise à jour Rails 6 # 7, détruire l'implémentation
Créer une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 13 Accorder l'en-tête d'authentification
Construire une API de tableau d'affichage avec certification et autorisation dans le contrôleur Rails 6 # 5, implémentation des routes
Créez une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 17 Ajoutez des privilèges d'administrateur
Construire une API de tableau d'affichage avec certification et autorisation dans Rails 6 # 14 Seed Affichage du temps d'exécution
Créez une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 3 RSpec, FactoryBot introduit et post-modèle
Créez une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 1 Construction de l'environnement
Créer une API de tableau d'affichage avec autorisation dans Rails 6 # 12 Association d'utilisateur et de publication
Créer une API de tableau d'affichage avec autorisation de certification dans Rails 6 # 11 Test et validation du modèle utilisateur ajoutés
Présentation de # 2 git et rubocop pour créer une API de tableau d'affichage avec autorisation d'authentification dans Rails
Construire une API de tableau d'affichage avec certification et autorisation avec Rails 6 # 18 ・ Implémentation du contrôleur de l'utilisateur final
# 4 post-validation et mise en œuvre de test pour créer une API de tableau d'affichage avec certification et autorisation dans Rails 6
Comment créer une API avec GraphQL et Rails
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
Comment utiliser credentials.yml.enc introduit à partir de Rails 5.2
Comment créer un environnement Rails 6 avec Docker
Essayez de créer un babillard en Java
[Rails] Comment créer un environnement avec Docker
[Comment insérer une vidéo dans un hameau avec Rails]
Comment interroger Array dans jsonb avec Rails + postgres
Environnement Build Rails (API) x MySQL x Nuxt.js avec Docker
Comment configurer un proxy avec authentification dans Feign
Japaneseize en utilisant i18n avec Rails
Implémenter l'authentification LTI dans Rails
Présentation du client gRPC aux rails
J'ai essayé d'implémenter l'API Rails avec TDD par RSpec. part2 -authentification de l'utilisateur-
Ce à quoi j'étais accro lors de la mise en œuvre de l'authentification Google avec des rails
Comment obtenir la valeur de boolean avec jQuery sous forme simple de rails
Comment renommer un modèle avec des contraintes de clé externes dans Rails
Comment créer un environnement Rails + Vue + MySQL avec Docker [dernière version 2020/09]
J'ai essayé d'implémenter l'API Rails avec TDD par RSpec. part3-Implémentation d'action avec authentification-
Étapes pour créer un environnement de développement Ruby on Rails avec Vagrant