Stworzyłem prosty interfejs API z Sinatra, który wysyła wiadomość e-mail na podstawie przesłanych danych JSON. Mogę utworzyć formularz, przesłać dane JSON za pośrednictwem formularza i uzyskać dostęp do parametrów, aby uzyskać treść, temat i treść wiadomości e-mail. Jednak próbuję użyć cURL, aby przetestować interfejs API i nie mogę sprawić, aby coś działało. Zakładam, że moje formatowanie w żądaniu cURL zostało przerwane. Poniżej znajduje się zapytanie cURL, które wypróbowałem, jak również dane wyjściowe parametrów, jak również próba przeanalizowania params z klejnotem JSON.Wysyłanie JSON za pośrednictwem żądania CURL POST do Sinatry
Staram się uzyskać params z gigantycznym kluczem, który jest ciągiem moich danych JSON o wartości zerowej. Próbowałem dodać Content-Type: application/json, a kiedy to zrobię, params jest pusty.
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
Oto hash params, który jest zwracany ...
{"{ \"to\": \"Brantley <[email protected]>\", \"subject\": \"hello world\", \"body\": \"Hi Jennifer! Sending you an email via this API I just made.\" }"=>nil}
Staram konwersji to na coś bardziej użytecznego z JSON params, a następnie pojawia się następujący ...
{\"{ \\\"to\\\": \\\"Brantley <[email protected]>\\\", \\\"subject\\\": \\\"hello world\\\", \\\"body\\\": \\\"Hi Jennifer! Sending you an email via this API I just made.\\\" }\":null}"
Spędziłem w tym dniu solidny dzień, przeczytałem 20 postów o tym samym problemie i nadal jestem zakłopotany, więc każda rada byłaby pomocna. Twoje zdrowie!
Polecenie curl wydaje się być w porządku na pierwszy rzut oka. Nie widząc kodu Sinatry, nie możemy ci jednak pomóc. Proszę złożyć minimalny przykład, który wykazuje problem. –
Mam to ... nie trzeba się wygłupiać z parametrami. Mogę pobrać ładunek JSON jako skrót, wykonując następujące czynności: payload = JSON.parse (request.body.read) –
Proszę dodać odpowiedź poniżej i oznaczyć jako zaakceptowane. Dzięki! –