iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Software Development

Rails 開發,每日一套件介紹! 系列 第 25

Day 25: 麝香葡萄好好吃 之 RESTful API Framework - Grape

  • 分享至 

  • xImage
  •  

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
每日一套件的第 25 天,請跟著我一起認識 Rails 開發好用的 30 個套件,建立出自己的常用套件庫吧!

首先,先祝台灣雙十國慶快樂
真是想不到,默默的鐵人賽第 25 天了,讓我寫一點小心得。

寫鐵人賽這件事,我認為最大的好處,就是從一開始半強迫自己每天寫一篇文章。到現在,開始逐漸變成一種習慣,現在每天固定寫也開始寫出一種興趣,甚至開始有一些別的主題的想法。然後寫完再到處看一下其他高人的文章,每天吸收一點新知識。

而且鐵人賽對我來說,也是一種奇怪的訓練。因為他有時間壓力,每天一定要發文完成才能達標,沒得拖。

對我而言,拖稿的問題有兩種,一種是我被其他事物分散注意力了,而又沒有時間壓力,就變成"再補就好",我歷年來的部落格就有點類似這樣。

另外一種是創作上,我注意到我常在創作的中期會陷入一個完美主義,這在個人的攝影、音樂作品集,都有同樣的影子,有很多類似 "not good enough to publish" 的 murmur、無法超越之前的作品 或者 無法 fulfill 自己對於這畫布的定義等。

所以儘管我還是有點強迫症,但鐵人賽算是有點解開這個束縛,反正就先寫在說,這也無關創作,只是一個基礎的訓練跟內容的輸出。而且它無法再補就好,他一定要馬上立刻寫,內容好不好,再來調整了。

總之,這是一個好的訓練,也蠻有趣的。明年可以再參加。
以上廢話,回歸正題。

Day 25: Grape


圖片取自在林邊

說到葡萄,最好吃的莫過於麝香葡萄了,最近還聽說了一種新吃法。
就是把麝香葡萄泡到氣泡水裡面,吃起來會帶有碳酸感喔!!!

???

Grape 是一個基於 Ruby 用來建構 RESTful 的 API 框架。尤其常被使用在開發 Web API、同時也具備了版本控制、參數驗證、認證等功能。雖然可以獨立運作,不過還是很常跟Rails 搭配使用,也有人暱稱說 Grape on Rails。

廢話不多說,直接玩一次。

安裝方式:

起手式:

$ bundle add grape

接著在 config/application.rb 裡加入兩行,讓rails可以讀到等一下要寫的檔案:

config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]

如下:

class Application < Rails::Application
  # ...
  # Support grape API
  config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
  config.autoload_paths += Dir[Rails.root.join('app')]
  # ...
end

先創造 api 的資料夾 mkdir app/api
然後做一個測試用的 api,裡面只寫了 ping pong 來測試 api,很常見的 api health check。

class Test < Grape::API
  version 'v0', using: :path
  format :json
  
  desc "Ping Pong!"

  get :ping do
    { data: "pong" }
  end
end

config/routes.rb 中加入 api 的路徑。
將api 加入在 /api 下,這樣所有的 api 路徑都會從 /api 開始。

Rails.application.routes.draw do
  # ...
  mount Api::Test => '/api'
  # ...
end

接著就可以開 rails server 囉!

測試 API:

可以使用工具,如 Postman 來測試您的 API,Postman 目前我也還用的不熟,這裡就不細講了。

幫 API 寫文件:

可以使用工具如 SwaggerGrape Swagger 來產生文件。這個主題可以後面再提,哈哈

我們明天見!


上一篇
Day 24: 端對端測試的水豚君 - Capybara
下一篇
Day 26: 有點小雞肋的 PDF 產生器 - wicked_pdf
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言