質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

733閲覧

Rubyでapiを叩く方法

hight_razer

総合スコア14

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

1クリップ

投稿2017/10/04 11:53

###前提・実現したいこと
ここに質問したいことを詳細に書いてください
プログラミング初心者です cloud9でapiを使うアプリをつくってみたいのですが
rubyで郵便番号のapiを叩くサイトの真似をしてプログラム書いてみたんですけどエラーがでて先に勧めません
参考にしたサイト(http://jumtech.hatenablog.jp/entry/2016/08/20/140720)
質問の仕方とかもしっかりわかっているわけではないので許してください

###発生している問題・エラーメッセージ

raise LoadError, "Unable to autoload constant #{qualified_name}, expected #{file_path} to define it" unless from_mod.const_defined?(const_name, false)

###該当のソースコード
Rubyここに言語を入力
class AddressController < ApplicationController
def show

params = URI.encode_www_form({zipcode: '7830060'}) uri = URI.parse("http://zipcloud.ibsnet.co.jp/api/search?#{params}") @query = uri.query response = Net::HTTP.start(uri.host, uri.port) do |http| http.open_timeout = 5 http.read_timeout = 10 http.get(uri.request_uri) end begin case response when Net::HTTPSuccess @result = JSON.parse(response.body) @zipcode = @result["results"][0]["zipcode"] @address1 = @result["results"][0]["address1"] @address2 = @result["results"][0]["address2"] @address3 = @result["results"][0]["address3"] when Net::HTTPRedirection @message = "Redirection: code=#{response.code} message=#{response.message}" else @message = "HTTP ERROR: code=#{response.code} message=#{response.message}" end rescue IOError => e @message = "e.message" rescue TimeoutError => e @message = "e.message" rescue JSON::ParserError => e @message = "e.message" rescue => e @message = "e.message" end

end
end

###試したこと ###補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

rails でなく、単純なアプリにしてみました。

aaa.rb

ruby

1require 'net/http' 2require 'uri' 3require 'json' 4 5def show(zipcode) 6 params = URI.encode_www_form(zipcode: zipcode) 7 uri = URI.parse("http://zipcloud.ibsnet.co.jp/api/search?#{params}") 8 response = Net::HTTP.start(uri.host, uri.port) do |http| 9 http.open_timeout = 5 10 http.read_timeout = 10 11 http.get(uri.request_uri) 12 end 13 14 address1 = '' 15 address2 = '' 16 address3 = '' 17 message = '' 18 19 begin 20 case response 21 when Net::HTTPSuccess 22 result = JSON.parse(response.body) 23 message = result['message'] 24 if result['results'] 25 address1 = result['results'][0]['address1'] 26 address2 = result['results'][0]['address2'] 27 address3 = result['results'][0]['address3'] 28 end 29 when Net::HTTPRedirection 30 message = "Redirection: code=#{response.code} message=#{response.message}" 31 else 32 message = "HTTP ERROR: code=#{response.code} message=#{response.message}" 33 end 34 rescue => e 35 message = e.message 36 end 37 38 [address1, address2, address3, message] 39end 40 41p show('7830060') 42p show('1000001') 43p show('1009999') 44p show('100xxxx') 45

実行例:
イメージ説明

投稿2017/10/04 13:09

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hight_razer

2017/10/05 10:01

動きました!!! ありがとうございます ここから少しずつ表示できるようにします どこの馬の骨ともわからんものにありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問