Mode API.
Lorsque j'ai utilisé axios pour POSTER l'action tout en utilisant Rails comme API, je l'ai reçu en tant que paramètres sous une forme différente de celle à laquelle je m'attendais du côté de Rails.
de face.ts
axios.post('/api/v1/users', {id: user.id})
retour.rb
class Api::V1::UsersController < ApplicationController
def index
end
end
La valeur envoyée devait être {" id "=> 1}
,
En regardant le journal, c'était {" id "=> 1," user "=> {" id "=> 1}}
.
Cela semble être une spécification du côté des rails.
De même, si vous activez config.wrap_parameters dans vos paramètres d'initialisation, ou si votre contrôleur appelle wrap_parameters, vous pouvez supprimer en toute sécurité l'élément racine de vos paramètres JSON. Par défaut, ce paramètre est dupliqué et encapsulé avec un nom de clé qui correspond au nom du contrôleur. Par conséquent, la requête JSON ci-dessus peut être écrite comme suit: { "name": "acme", "address": "123 Carrot Street" } Si les données sont envoyées à CompaniesController, elles seront enveloppées avec la clé: entreprise comme indiqué ci-dessous. { name: "acme", address: "123 Carrot Street", company: { name: "acme", address: "123 Carrot Street" } }
Rails en mode API est maintenant initialiseur
wrap_parameters.rb
ActiveSupport.on_load(:action_controller) { wrap_parameters format: %i[json] }
Il semble que cela fonctionne parce qu'il y en a.
Cependant, cela ne se produit pas avec une requête GET.
Recommended Posts