Rails5のAPIモードでAPIをつくってみる(1)
プロジェクト作成
$ rails new api1 --apirails 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/itemsbody: item[name] => 納豆 item[price] => 200result
{ "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 installconfig/application.rbに下記のような感じで書く。
config.middleware.insert_before 0, Rack::Cors do allow do origins '*' resource '*', :headers => :any, :methods => [:get, :post, :options] endendローカル環境だと、上記rack-corsの設定いらなかった。とりあえず、一覧、詳細、追加、修正、削除が全部できている。あとは、認証、認可、検索とか追加して本番環境で試したい。