プロジェクト作成
$ rails new api1 --api
rails server立ち上げる
$ rails server
おーAPIモードになってる。 とりあえず、商品名と金額を登録・取得できる簡単なAPIをつくってみます。
商品テーブルのscaffoldとtableをつくる
$ rails generate scaffold Item name:string price:int
invoke active_record
create db/migrate/20170325093816_create_items.rb
create app/models/item.rb
invoke test_unit
create test/models/item_test.rb
create test/fixtures/items.yml
invoke resource_route
route resources :items
invoke scaffold_controller
create app/controllers/items_controller.rb
invoke test_unit
create test/controllers/items_controller_test.rb
$ rails db:migrate
エラーになった。intじゃだめっぽい。integerらしい。
$ rails destroy scaffold Item invoke active_record remove db/migrate/20170325093816_create_items.rb remove app/models/item.rb invoke test_unit remove test/models/item_test.rb remove test/fixtures/items.yml invoke resource_route route resources :items invoke scaffold_controller remove app/controllers/items_controller.rb invoke test_unit remove test/controllers/items_controller_test.rb $ rails generate scaffold Item name:string price:integer $ rails db:migrate == 20170325094155 CreateItems: migrating ====================================== -- create_table(:items) -> 0.0045s == 20170325094155 CreateItems: migrated (0.0058s) =============================
とりあえずできた。http://localhost:3000/itemsにアクセスすると商品一覧がみられる。
get /items 商品一覧取得 post /items 商品登録 get /items/1 商品詳細 put|patch /items/1 更新 delete /items/1 削除
postmanで登録してみる
url: (post)http://localhost:3000/items body: item[name] => 納豆 item[price] => 200
result
{ "id": 1, "name": "納豆", "price": 200, "created_at": "2017-03-25T13:12:32.375Z", "updated_at": "2017-03-25T13:12:32.375Z" }
クロスドメインアクセスOKにする場合、下記が必要。 APIファーストでバックエンドとフロントエンドを別々に開発する時にハマるクロスドメインアクセス cyu/rack-cors
Gemfileに下記を追加。既に書いてあってコメントアウトされてるので、コメントを外す。
gem 'rack-cors'
bundle installする
$ bundle install
config/application.rbに下記のような感じで書く。
config.middleware.insert_before 0, Rack::Cors do allow do origins '*' resource '*', :headers => :any, :methods => [:get, :post, :options] end end
ローカル環境だと、上記rack-corsの設定いらなかった。とりあえず、一覧、詳細、追加、修正、削除が全部できている。あとは、認証、認可、検索とか追加して本番環境で試したい。