Eine Rails-Anwendung mit einer RESTful-Schnittstelle muss POST-Daten mit einem benutzerdefinierten MIME-Typ basierend auf 'application/json' akzeptieren. Nennen wir diesen MIME-Typ 'application/vnd.com.example.Foo + json'. Die Registrierung des benutzerdefinierten MIME-Typs in Rails mit Mime :: Type.register funktioniert gut, da die Anwendung den MIME-Typ erkennt, der im Header "Accept:" angegeben ist, und eine JSON-Ansicht über respond_to rendert.Analysieren von JSON Payload in Rails bei Verwendung eines benutzerdefinierten MIME-Typs
Das Problem ist mit Controller-Methoden wie aktualisieren und erstellen, die benutzerdefinierte JSON-formatierte Daten in einen Params-Hash konvertieren müssen. Wenn ich den Header "Content Type:" auf application/json setze, werden die Daten in den Params-Hash geparst.
Aber wenn ich den Header "Content Type:" auf "applcation/vnd.com.example.Foo + json" setzen, dann wird die Nutzlast nicht geparst.
Es scheint also, als ob MIME :: Type.register für die Steuerung des Blocks "advant_to" verwendet wird, aber nicht für die Entscheidung, wie Nutzdaten für Erstellungs- und Aktualisierungsmethoden analysiert werden.
Irgendwelche Ideen?
Sieht aus wie es ein wenig anders in Rails sein könnte 5: 'ActionDispatch :: Request.parameter_parsers [Mime: : Type.lookup ('application/vnd.com.example.foo + json')] = lambda {| raw_post | ActiveSupport :: JSON.de-Code (raw_post)} –