API-Modus.
Wenn ich Axios zum POSTEN der Aktion verwendet habe, während ich Rails als API verwendet habe, habe ich sie als Parameter in einer anderen Form erhalten, als ich es auf der Rails-Seite erwartet hatte.
Vorderseite.ts
axios.post('/api/v1/users', {id: user.id})
zurück.rb
class Api::V1::UsersController < ApplicationController
def index
end
end
Es wurde erwartet, dass der gesendete Wert "{" id "=> 1}" ist.
Im Protokoll war es "{" id "=> 1," user "=> {" id "=> 1}}".
Dies scheint eine Spezifikation auf der Rails-Seite zu sein.
Wenn Sie config.wrap_parameters in Ihren Initialisierungseinstellungen aktivieren oder wenn Ihr Controller wrap_parameters aufruft, können Sie das Stammelement Ihrer JSON-Parameter sicher entfernen. Standardmäßig wird dieser Parameter dupliziert und mit einem Schlüsselnamen versehen, der dem Controller-Namen entspricht. Daher kann die obige JSON-Anforderung wie folgt geschrieben werden: { "name": "acme", "address": "123 Carrot Street" } Wenn die Daten an CompaniesController gesendet werden, werden sie wie unten gezeigt mit dem Schlüssel: company verpackt. { name: "acme", address: "123 Carrot Street", company: { name: "acme", address: "123 Carrot Street" } }
Rails im API-Modus ist jetzt initialisiert
wrap_parameters.rb
ActiveSupport.on_load(:action_controller) { wrap_parameters format: %i[json] }
Es scheint, dass dies funktioniert, weil es gibt.
Dies ist jedoch bei einer GET-Anforderung nicht der Fall.
Recommended Posts