FastAPI 使用教程
1. 项目介绍
FastAPI 是一个用于快速创建健壮、标准化 API 端点的 Rails 库。它通过构建高效的 SQL 查询(利用 JOIN 和子查询),基于模型依赖(例如 belongs_to
、has_one
和 has_many
)来实现这一功能。FastAPI 允许开发者通过几行代码决定哪些字段暴露给 API 端点,应用哪些数据过滤,并创建控制器。
FastAPI 支持 PostgreSQL 数据层,并且依赖于 Oj(>= 2.9.9)进行 JSON 序列化,ActiveRecord(>= 3.2.0)和 ActiveSupport(>= 3.2.0)。
2. 项目快速启动
安装
首先,确保您的环境中已经安装了 Ruby 和 Rails。然后通过 RubyGems 安装 FastAPI:
gem install fastapi
或者在 Rails 项目的 Gemfile 中添加以下代码:
require 'fastapi'
安装完成后,执行以下命令来更新项目依赖:
bundle install
配置
在 Rails 项目中,您需要定义模型之间的关系,并为每个模型设置 fastapi_standard_interface
或 fastapi_standard_interface_nested
。
例如,假设您有三个模型:Person
、Bucket
和 Marble
。您可以这样定义它们:
class Person < ActiveRecord::Base
has_many :buckets
fastapi_standard_interface [:id, :name, :gender, :age]
end
class Bucket < ActiveRecord::Base
belongs_to :person
has_many :marbles
fastapi_standard_interface [:id, :color, :material, :person, :marbles]
fastapi_default_filters({ marbles: { radius__lte: 10 } })
end
class Marble < ActiveRecord::Base
belongs_to :bucket
fastapi_standard_interface [:id, :color, :radius]
end
路由和控制器
接下来,在 config/routes.rb
文件中定义路由:
namespace :api do
namespace :v1 do
defaults format: :json do
resources :buckets
end
end
end
然后创建相应的控制器 app/controllers/api/v1/buckets_controller.rb
:
class Api::V1::BucketsController < ApplicationController
def index
filters = request.query_parameters
render json: Bucket.fastapi.filter(filters).response
end
end
启动服务器
现在,启动 Rails 服务器:
rails server
访问 http://yourserver:port/api/v1/buckets
,您应该可以看到格式化的 JSON 数据。
3. 应用案例和最佳实践
使用 FastAPI,您可以轻松创建嵌套的数据结构。例如,如果您想要获取一个包含所有相关信息(如所属人信息和弹珠列表)的水桶列表,您只需定义好模型和关系,FastAPI 会自动处理复杂的 SQL 查询。
以下是一个请求示例,它会返回颜色为红色的水桶列表:
http://yourserver:port/api/v1/buckets/?color=red
FastAPI 还支持链式过滤,例如:
http://yourserver:port/api/v1/buckets/?color__in[]=red&color__in[]=blue
确保在设计中考虑过滤、分页和排序,以便为用户提供更灵活的数据访问。
4. 典型生态项目
FastAPI 作为一个 Rails 库,可以与许多其他 Rails 生态中的项目配合使用,例如:
- ActiveRecord:用于数据库 ORM 操作。
- Devise:用于用户认证。
- JWT:用于生成和验证 JSON Web Tokens。
- Pundit:用于权限控制。
通过整合这些项目,您可以构建功能完整且安全的应用程序。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考