建立地基,開發第一個 API
模組化架構
這個章節會告訴你如何建立第一個 API
通常用 ping pong 來測試 api 接口是否正常,也叫做 health check
在一開始會比較囉唆的建立資料夾,為的是後期開發能夠有模組化的結構
那我們就開始吧!
首先,先創建我們開發 api 用的資料夾
mkdir app/api
創建入口點
touch app/api/api_root.rb
一般來說我們傳遞資料的格式都會用 json,如果沒有設定就會用 xml,所以這邊要設定 format 為 json
class ApiRoot < Grape::API
PREFIX = '/api'.freeze
format :json
mount ApiV0::Base
end
我們要從 v0 開始開發,雖然 grape 可以設定版本號,但我認為用資料夾區分更好管理
所以創建 mkdir app/api/api_v0
創建 v0 入口點
touch app/api/api_v0/base.rb
module ApiV0
class Base < Grape::API
version 'v0', using: :path
mount Ping
end
end
這裡 mount Ping 是還沒實做的 api module
加入檔案 touch app/api/api_v0/ping.rb
module ApiV0
class Ping < Grape::API
desc 'Ping pong'
get "/ping" do
"pong"
end
end
end
在 config/routes.rb
裡面這樣加入
Rails.application.routes.draw do
# ...
mount ApiRoot => ApiRoot::PREFIX
# ...
end
這樣做的好處是把 api prefix 也都放在 api_root.rb
進行管理, route 那邊就只要寫一次就行。
我們將 api 掛載在路由網址 /api 下,這樣所有的 api 都是從 /api 開始
啟動 rails server 輸入 http://localhost:3000/api/v0/ping
就可以看到回應 pong 了