终端常用指令
#启动 rails s,同时开发 API 接口
rails s -b 0.0.0.0
#查询本机网络端口设置,获取 API 端口信息
ifconfig
在终端打印 api 信息
Controller
def new
binding.pry
@letter = Letter.new
@letter_text = LetterText.new
users = RestClient.get 'http://192.168.1.251:3000/api/v1/users/1.json'
puts users
k = JSON.parse(users)
pp k
pp k["user"]["id"]
puts k["user"]["id"]
end
参考该教程:使用 Rails 构建 API 实践
API 传输格式——json
使用 API 数据与 RMVC 架构不同之处,省去数据库与 Model 即 RVC。例如,Rails01 项目的 User 数据通过 API 调用 Rails02 项目的 User 数据使用。不仅可以获得 User 的数据,还可以通过 Modle 关系获得关联的部门与权限信息。
config/routes.rb
Rails.application.routes.draw do
root 'notices#index'
resources :users
end
app/controllers/users_controller.rb
class UsersController < ApplicationController
require 'rest-client'
require 'json'
require 'pp'
require 'rubygems'
def index
# 以下 API 调用只是 get,后面 params部分是 head 信息
users = RestClient.get 'http://192.168.1.251:3000/api/v1/users'
# 解析为 JSON 格式
@users = JSON.parse(users)["user"]
end
def show
# gem 'rest-client' 没有提供更改 API 路径最后 id 的方法,通过变量赋值与插值解决
user_id = params[:id].to_i
user = RestClient.get("http://192.168.1.251:3000/api/v1/users/#{user_id}")
@user = JSON.parse(user)["user"]
end
end
rails c 页面测试
从截图看出 @user = JSON.parse(user)
获得的是一组哈希数组,通过哈希取值方式取出需要的信息。
数组取值:值 = array[key] 即 @user = JSON.parse(user)["user"]
Controller 与 View 都是同样的取值方式
app/views/users/index.html.erb**
<h1>员工列表h1>
<table class="table table-bordered table-hover">
<tr class="text-info">
<th>编号th>
<th>姓名th>
<th>部门th>
tr>
<% @users.each do |f| %>
<tr>
<td><%= f["coding"] %>td>
<td><%= link_to "#{f["name"]}", user_path(f["id"]) %>td>
<td><%= f["department"]["name"] %>td>
tr>
<% end %>
table>
app/views/users/show.html.erb**
<div class="col-md-4 col-md-offset-4 text-center">
<h1>员工信息h1>
<hr>
<h3><%= @user["name"] %>h1>
<p>
编号: <%= @user["coding"] %>
p>
<p>
部门: <%= @user["department"]["name"] %>
p>
<p>
角色: <%= @user["role"] %>
p>
<p>
权限: <%= @user["permissions"][0]["name"] %>
p>
div>