edy hub

プログラミングやライフスタイルについて書き綴っています

railsで任意のURLにJSONをPOSTする方法

特定のURLをSlackのWebhookとします。

def post_man
  url = 'https://hooks.slack.com/services/xxxxxx/yyyyy/zzzzz'
 
 content = { text: 'This post is from Ruby on Rails', icon_emoji: ':ghost:' }
 uri  = URI.parse(WEBHOOK_URL)
 http = Net::HTTP.new(uri.host, uri.port)
 http.use_ssl = true
 http.verify_mode = OpenSSL::SSL::VERIFY_NONE
 http.start do
   request = Net::HTTP::Post.new(uri.path)
   request.set_form_data(payload: content.to_json)
   http.request(request)
 end
end

参考記事

masawada.hatenablog.jp

便利Gemを発見

なんとかPOSTできましたが、そんなときに gem 'rest-client' という便利Gemの存在を知りました。

github.com

こやつのお蔭で冗長だった、記述がここまで簡潔に!!

def post_man
  url = 'https://hooks.slack.com/services/xxxxxx/yyyyy/zzzzz'
  body = params.to_json
  content_type = :json
  RestClient.post(url, body, content_type: content_type)
end