ncコマンドで、RailsのCRUDを叩いてみる

HTTPのメソッドについて理解を深めるため、ncコマンドでRailsCRUDを叩いてみようと思います。

サーバー側のスキーマとルーティング

サーバー側のスキーマとルーティングについて記載します。 :arrow_down: スキーマです。

db/schema.rb

ActiveRecord::Schema.define(version: 20170109002856) do
  # These are extensions that must be enabled in order to support this database
  enable_extension "plpgsql"

  create_table "projects", force: :cascade do |t|
    t.string   "name"
    t.integer  "client_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end
end

:arrow_down: ルーティングです。 config/routes.rb

Rails.application.routes.draw do
  resources :projects
end

また、app/controllers/application_controller.rbのprotect_from_forgeryコメントアウトしました。

HTTPメソッド

サーバー側の準備が出来たので、HEADGETPOSTPUTDELETEメソッドを実行してみます。

HEAD

~ %nc -c 127.0.0.1 3000
HEAD /projects HTTP/1.1
Host: localhost:3000

GET

~ %nc -c 127.0.0.1 3000
GET /projects HTTP/1.1
Host: localhost:3000

POST

~ %nc -c 127.0.0.1 3000
POST /projects HTTP/1.1
Host: localhost:3000
Content-type: application/x-www-form-urlencoded
Content-Length: 52

project%5Bclient_id%5D=1&project%5Bname%5D=project1

PUT

上手くいかず… :droplet:

DELETE

~ %nc -c 127.0.0.1 3000
DELETE /projects/1 HTTP/1.1
Host: localhost:3000

まとめ

PUTメソッドのみ動作するリクエストを作成出来ませんでした。 ただし、一通り手を動かせたので実際のHTTPリクエストでどのような内容のBODYが送信されるのか理解が深まりました。

以上です。