Rails 开发环境 API 调用

参考资料:

  • 使用 Rails 构建 API 实践
  • gem ‘rest-client’ 官方文档
  • 五倍红宝石.Rails 入門.API 模式
  • RestClient Gem简介

测试

终端常用指令

#启动 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

API 端口设置

参考该教程:使用 Rails 构建 API 实践

API 传输格式——json

使用 API 教程

使用 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>

你可能感兴趣的:(Rails,教程)