J'ai créé un service d'API RESTful à l'aide de raisin, je vais donc le résumer. Après l'avoir créé, j'ai utilisé Postman pour vérifier le comportement.
ruby 2.6.5
Rails 5.2.4
-Créez n'importe quel utilisateur dans le fichier Seeds. gem utilise du raisin. Créez en mode API.
-Accès du client à l'aide de Postman pour enregistrer, mettre à jour et supprimer des données. Obtenez des données -L'application a été créée pour que les fonctions CRUD générales et l'acquisition de données puissent être acquises à l'aide de JSON.
Créez d'abord une application
console
$ rails new sample_app
Cette fois, le nom de l'application était "sample_app".
Installez d'abord la gemme
Ajoutez ce qui suit
Gemfile
gem ‘grape’ #Créez facilement des API RESTful avec des applications Rack telles que des rails et sinatra
gem 'grape-entity’ #Si seul le raisin est utilisé, toutes les valeurs seront affichées. grain de raisin-Vous pouvez utiliser une entité pour limiter et mettre en forme les éléments d'affichage.
gem ‘grape_on_rails_routes’ #Il facilite la lecture et l'écriture des routes créées par l'API Grape.
Puis regroupez l'installation.
$ bundle install --path vendor/bundle
Générer un modèle d'utilisateur
console
$ bundle exec rails g model User name:string email:string age:integer
$ rails db:migrate
Préparez les données pour l'échantillon.
Créez db / seedss.rb avec le contenu suivant.
db/seeds.rb
User.create(name: 'Sony', email: '[email protected]', age: '40')
User.create(name: 'Fredo', email: '[email protected]', age: '38')
User.create(name: 'Tom', email: '[email protected]', age: '35')
User.create(name: 'Michael', email: '[email protected]', age: '33')
User.create(name: 'Connie', email: '[email protected]', age: '30')
Demandez à la base de données de lire le fichier.
$ bundle exec rake db:seed
Créez la structure de répertoires suivante.
~/sample_api/
├ app/api/
│ └ api.rb
│ └ resources/
│ └ v1/
│ └ root.rb
│ └ user.rb
│ └ entities/
│ └ v1/
│ └ root_entity.rb
│ └ user_entity.rb
Assurez-vous que les fichiers sous app / api sont chargés automatiquement.
config/application.rb
module SampleApi
class Application < Rails::Application
#..
# app/Charger automatiquement le fichier rb sous api
+ config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
+ config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
end
end
Montez dans la relation [parent-enfant-petit-fils-arrière-petit-fils] comme indiqué dans la figure ci-dessous.
config/routes.rb # [parent]Paramètres de routage
└ app/api/api.rb # [Enfant]Classe parent API
└ app/api/resources/v1/root.rb # [Petit fils]Classe parent API v1
└ app/api/resources/v1/users.rb # [Arrière-petit-fils]classe userAPI
[Parent] config / routes.rb
Définissez le routage.
config/routes.rb
Rails.application.routes.draw do
# app/api/api.Monter RB
+ mount API => ‘/' #Avec cette méthode, la classe de base pointe vers chaque action de la classe, vous n'avez donc pas besoin d'ajouter une route à chaque action.
end
[Enfant] app / api / api.rb
Créez une classe parent API.
app/api/api.rb
class API < Grape::API
#Nom du premier segment de l'url ex) http://localhost/api/
prefix 'api'
# app/api/resources/v1/root.Monter RB
mount Resources::V1::Root
end
[Petit-fils] app / api / resources / v1 / root.rb
Créez une classe parente pour l'API v1.
app/api/resources/v1/root.rb
module Resources
module V1
class Root < Grape::API
version 'v1'
format :json
content_type :json, 'application/json'
# app/api/resources/v1/users.Monter RB
mount Resources::V1::Users
end
end
end
Ensuite, créez un fichier Entity avant de créer la classe userAPI. Si vous ne créez pas cela, les données que vous ne souhaitez pas afficher, telles que l'heure de création et l'heure de mise à jour, seront affichées lors de l'acquisition des données.
app/api/entities/v1/root_entity.rb
module Entities
module V1
class RootEntity < Grape::Entity
end
end
end
Afficher uniquement le nom, l'adresse e-mail et l'âge.
(Created_at et updated_at ne sont pas affichés)
app/api/entities/v1/user_entity.rb
module Entities
module V1
class UserEntity < RootEntity
# name, email,Afficher seulement l'âge
expose :name, :email, :age
end
end
end
Créez une classe pour userAPI.
app/api/resources/v1/user.rb
module Resources
module V1
class Users < Grape::API
resource :users do
desc "user list"
get do
present User.all, with: Entities::V1::UserEntity # with:Appliquez le contenu du fichier d'entité en définissant ~ ~
end
desc "create new user"
params do
requires :name, type: String
requires :email, type: String
requires :age, type: Integer
end
post do
User.create!({ name: params[:name], email: params[:email], age: params[:age] })
end
desc "Update user"
route_param :id do
put do
User.find(params[:id]).update({ name: params[:name], email: params[:email], age: params[:age] })
end
end
desc "show user"
params do
requires :id, type: Integer, desc: "user id"
end
get ":id" do
present User.find(params[:id]), with: Entities::V1::UserEntity #Il en va de même pour cette acquisition de données.
end
desc "Delete user"
route_param :id do
delete do
user = User.find(params[:id])
user.destroy
end
end
end
end
end
end
$ rails grape:routes or rake grape:routes
GET | /api/:version/users(.:format) | v1 | user list
POST | /api/:version/users(.:format) | v1 | create new user
PUT | /api/:version/users/:id(.:format) | v1 | Update user
GET | /api/:version/users/:id(.:format) | v1 | user_show
DELETE | /api/:version/users/:id(.:format) | v1 | Delete user
Vous avez créé l'API jusqu'à présent. De là, nous vérifierons si la fonction CRUD et l'acquisition de données peuvent être effectuées correctement en utilisant Postman.
Vous pouvez confirmer l'acquisition en entrant l'URI ci-dessus après le démarrage des rails.
URL du facteur https://www.postman.com/
Lancer Postman L'inscription est facile si vous suivez les instructions.
$ rails s
Définissez les données à enregistrer dans Body au format JSON et exécutez
URL:http://localhost:3000/api/v1/users
Body: raw JSON(application/json)
Body
{
“name”:"Échantillon"
“email”: “[email protected]”
“age”: 19
}
Modifiez les paramètres du facteur comme ci-dessus et appuyez sur le bouton d'envoi
Vous pouvez voir qu'un nouvel utilisateur est enregistré avec le 6ème identifiant dans la colonne ci-dessous.
Mettez à jour les informations enregistrées. Définissez les informations à modifier dans l'élément Body.
URL:http://localhost:3000/api/v1/users/:id (: id est la valeur d'id enregistrée dans la base de données, définie sur 6 ici)
Body:raw JSON(application/json)
Body
{
“name”:"échantillon"
“email”: “[email protected]”
“age”: 20
}
La mise à jour est en cours.
Supprimer les informations enregistrées
URL:http://localhost:3000/api/v1/users/:id
(: id est la valeur d'id enregistrée dans la base de données, définie sur 6 ici)
J'ai réussi à supprimer les données créées précédemment.
Obtenez toutes les informations enregistrées. Essayez d'obtenir 5 données enregistrées en tant que données de semences.
URL:http://localhost:3000/api/v1/users
Vous pouvez vérifier les données enregistrées ci-dessous.
Spécifiez l'id à partir des informations enregistrées et n'acquérez que des informations spécifiques (les informations de données d'id: 6 avant d'être supprimées sont acquises).
URL:http://localhost:3000/api/v1/users/:id
Nous avons pu confirmer le comportement de la fonction CRUD. Je n'ai pas suffisamment étudié les fonctions de Postman, je vais donc l'approfondir.
De plus, comme il existe encore diverses fonctions pour les gemmes de raisin, nous les apprendrons à les maîtriser.
Référence: Mémo sur l'utilisation de Postman, un outil pratique pour le développement et les tests d'API https://qiita.com/zaburo/items/16ac4189d0d1c35e26d1
Référence: Vérifiez l'API à l'aide de Postman https://qiita.com/me-654393/items/b14824dd9b37de0da163
Référence: API RESTFUL UTILISANT DU RAILS DANS LES RAILS https://www.nascenia.com/restful-api-using-grape-in-rails/
Référence: raisin github https://github.com/ruby-grape/grape
Recommended Posts