Ho creato una semplice API con Sinatra che invia un'email basata sui dati JSON inviati. Posso creare un modulo, inviare i dati JSON tramite il modulo e accedere ai parametri per ottenere l'oggetto, il soggetto e il corpo dell'e-mail. Tuttavia, sto cercando di usare cURL per testare l'API e non riesco a far funzionare le cose. Presumo che la mia formattazione nella richiesta cURL sia stata eliminata. Di seguito è riportata una richiesta CURL che ho provato oltre all'output di params e un tentativo di analizzare i parametri con la gemma JSON.Invio di JSON tramite la richiesta CURL POST a Sinatra
Tendo ad ottenere parametri con una chiave gigante che è una stringa dei miei dati JSON con un valore pari a zero. Ho provato ad aggiungere Content-Type: application/json, e quando lo faccio, params è vuoto.
curl -X POST -H "Accept: application/json" -d '{ "to": "Brantley <[email protected]>", "subject": "hello world", "body": "Hi Jennifer! Sending you an email via this API I just made." }' http://localhost:9393/send-email
Ecco l'hash params che viene restituito ...
{"{ \"to\": \"Brantley <[email protected]>\", \"subject\": \"hello world\", \"body\": \"Hi Jennifer! Sending you an email via this API I just made.\" }"=>nil}
provo conversione di questo in qualcosa di più utile con JSON params, e quindi ottengo il seguente ...
{\"{ \\\"to\\\": \\\"Brantley <[email protected]>\\\", \\\"subject\\\": \\\"hello world\\\", \\\"body\\\": \\\"Hi Jennifer! Sending you an email via this API I just made.\\\" }\":null}"
Ho trascorso una giornata solida su questo, ho letto 20 post di stackoverflow su problemi simili e sono ancora perplesso, quindi qualsiasi consiglio sarebbe utile. Saluti!
Il comando di arricciatura sembra ok a prima vista. Senza vedere il codice di Sinatra, tuttavia, non possiamo aiutarti. Si prega di mettere insieme un esempio minimo che mostra il problema. –
Ho capito ... non c'è bisogno di scherzare con i param. È possibile ottenere il payload JSON come hash eseguendo quanto segue ... payload = JSON.parse (request.body.read) –
Si prega di aggiungere la risposta qui sotto e contrassegnare come accettato. Grazie! –