使用 Ruby on Rails 构建 Cowsay REST API 并部署到 Heroku 和 RapidAPI
几乎每个主要的在线服务都提供 API(应用程序编程接口),它允许开发者通过编程方式访问服务功能。无论是 RESTful API 还是 JSON API,如果你计划开发应用程序,添加 API 功能都是必不可少的一步。
在本文中,我们将通过构建一个 Cowsay API 来学习如何实现这一目标。用户可以通过 API 发送文本,并使用 Cowsay 的参数自定义输出。最终,我们会将该 API 部署到 Heroku,并发布到 RapidAPI,使全球开发者都能使用。
一. 准备工具
在开始之前,请确保你已安装以下工具:
- Ruby 和 Rails
- Bundler
- Heroku CLI
- curl 或其他 API 测试工具(如 Postman、Insomnia)
- 代码编辑器(推荐 Visual Studio Code)
二. 创建项目
Rails 提供了生成精简 API 的选项,无需完整 HTML 功能,也可以跳过 ActiveRecord(无需数据库)。
运行命令创建 API 项目:
rails new cow_say --api --skip-active-record
在 Gemfile 中添加依赖:
# Gemfile
gem 'ruby_cowsay'
gem 'jbuilder'
安装依赖:
bundle install
三. 添加控制器和路由
API 将包含一个端点 /say,客户端通过 POST 请求发送参数。
1. 定义路由
在 config/routes.rb 中添加:
Rails.application.routes.draw do
post 'say', to: 'cow#say'
end
2. 创建控制器
在 app/controllers/cow_controller.rb 中:
class CowController < ApplicationController
def say
@message = Cow.new.say(params[:message])
end
end
3. 创建 JSON 视图
在 app/views/cow/say.json.jbuilder 中:
json.message @message
四. 测试 API
启动 Rails 服务器:
rails server
使用 curl 测试 POST 请求:
curl localhost:3000/say \
-H 'Content-Type: application/json' \
-d '{"message": "Hello from RapidAPI"}'
输出示例:
{
"message": " _____________________\n< Hello from RapidAPI >\n ---------------------\n \\ ^__^\n \\ (oo)\\_______\n (__)\\ )\\/\\\n ||----w |\n || ||"
}
可解析 JSON:
curl localhost:3000/say \
-H 'Content-Type: application/json' \
-d '{"message": "Hello from RapidAPI"}' \
| ruby -r json -e "print JSON.parse(STDIN.read)['message']"
五. 增加参数和验证
为了增强 API 功能,可以添加更多参数,例如:
- 自定义角色(如恐龙)
- 气泡类型(如思考气泡)
修改控制器 say 方法以处理这些参数:
class CowController < ApplicationController
def say
@message = Cow.new(params[:cow] || 'cow').say(params[:message])
# 可添加验证逻辑
end
end
六. 部署到 Heroku
- 登录 Heroku 并创建应用:
heroku login
heroku create your-app-name
- 将 Rails 项目推送到 Heroku:
git push heroku main
- 部署完成后,访问提供的 URL 测试 API。
七. 发布到 RapidAPI
RapidAPI 是全球 API 市场,可让开发者发现和使用你的 API。发布步骤:
-
登录 RapidAPI 并创建新 API
-
设置基本 URL 为 Heroku 应用地址
-
配置请求头:
Content-Type: application/jsonAccept: application/json
-
创建端点:
- 名称:
Say - 方法:
POST - 路径:
/say
- 名称:
-
定义请求体示例:
{"message": "Hello from RapidAPI", "cow": "stegosaurus", "balloon_type": "think"}
保存并测试端点,确保正常运行。
八. 总结
本文展示了如何使用 Ruby on Rails 构建 RESTful API,并通过 Heroku 部署与 RapidAPI 发布。通过这些步骤,你可以快速搭建一个功能丰富的 API,并分享给全球开发者。
进一步扩展可以考虑:
- 配置数据库以存储消息或订阅者
- 在 Heroku 上添加缓存或调度任务
- 在 RapidAPI 上提供更多端点和文档
完整教程参考:RapidAPI 原文