一般的資料庫架構有辦法利用Ruby架設RESTful API嗎?


#1

剛剛接到一個需求是說 一台linux的主機, 上面有安裝好的MySQL資料庫,跟已經存入的資料
需要開發API讓他們的人使用

我剛開始想說可以用 JC 之前提到的這篇

可是後來想想, 這個架構好像不是Rack的那種, 這樣子是不是也沒辦法開model寫上has_many, belong_to 那些關係, 都要寫許多的 select SQL 語法來完成API ?

我看了Grape的文件
https://github.com/ruby-grape/grape
上面寫說

It’s designed to run on Rack or complement existing web application frameworks such as Rails and Sinatra by providing a simple DSL to easily develop RESTful APIs

所以跟我需求的應該是不同的架構,所以不能共用的意思?
或是請問有什麼其他方法可以快速地開發RESTful API嗎?

剛接觸Rails大約3個月, 對許多觀念都還不是很了解,謝謝大家


#2

小可愛…所有的 relation 都是 ActiveRecord 提供的,而你的 model 的 class 不是正繼承著 ActiveRecord::Base ,第一行就類似 class Item < ActiveRecord::Base ,所以 has_many , belong_to 這一整票都可以用,你可以把所有的 model 都寫在同一個 .rb 檔內層層疊然後引用即可( load / require_relative,新手教學內有:Ruby & Rails 02),而真正只讓你能用 SQL 的 gem 叫做 mysql2,不叫 ActiveRecord,and 你引入的那個頁面的 demo code 其實也沒有寫 SQL 不是嗎???

rack 架構指的是層架式的需求解離,通常用在"封包"上,類似 http package => 拆出 header => 拆出 cookie => 拆出 session => route 一層一層解,中間可能插一層 flash 專用的 header 解離或是快點回 user 一些 content,而你在 model 層的東西和 rack 一點關係都沒有 … model 層只有 ORM 和一些 flow control,也就是對上經過 ActiveRecord 封裝成 object 讓你好用點,而對下會變成 SQL 來操作你的 RDBMS ( MySQL ),就這樣而已

Grape << 這個就是最快速開發 API 的東西了,雖然對新手有一點困難 … 不過上 sinatra demo 打一下就可以開始跑了,不然不要用 Grape 也可以,開一個純 sinatra 就可以開始玩了( get / post 一個一個開始打,所謂的 API 其實就取得和送出而已 ), & 你已經得到了關鍵字,該去玩玩看 sinatra 了啊啊啊啊啊啊( 簡短的 demo code 上面的連結內也都有了 )

anyway 不要眼高手低,其實所有東西測試一下就知道了,你連一個 rb 檔都沒開起來測就來問問題,這樣不對低,撞牆後 code 貼上來 log 貼上來再來問唄,否則一點用都沒有

加強自己實力最簡單的地方就是用你的肉體記得,而非你的腦袋,共勉之~~


#3

感謝,我會邊try邊了解的