Railsでapiモードを使い始めてpostmanを利用するようになりましたが、利用してからまだ3日と非常に日が浅く、しょーもないことでハマってしまいました。同じような人を出さないためにここに書き残そうと思います。ちなみにほんとに泣いてはいません。
環境
Rails 6.1.3
はじめに
結論から言います。自分の場合はjson形式にせずにtext形式で送っていたことがハマった原因
でした。これを見て思い当たる節がある人は今すぐtext形式からjson形式に変えて送ってみましょう。ね、しょうもないでしょ?
やりたかったこと
postmanでpostリクエストを送ってcontactインスタンスを保存しようとしました。
contacts_controller.rb
classV1::ContactsController<ApplicationController..defcreate@contact=Contact.new(contact_params)@contact.saverenderjson: @contact,status: :createdend..privatedefcontact_paramsparams.require(:contact).permit(:first_name,:last_name,:email)endend
routes.rb
Rails.application.routes.drawdonamespace:v1doresources:contactsendend
これでhttp://localhost:3000/v1/contactsのpostにデータを送れば保存されるはずでした。
Postリクエスト失敗
Postmanで以下の形式でPostリクエストを送ることを試みます。
{
"contact": {
"email": "hoge@foo.com",
"first_name": "hoge",
"last_name": "foo"
}
}
あれ?
エラーが出てる...
解決
text形式からjson形式に変更すれば解決できました!
おわりに
こんなので一日費やしてしまいました...。ちゃんと形式は確認しようね。おわり