美文网首页
构建API服务器3

构建API服务器3

作者: yaya_pangdun | 来源:发表于2016-06-16 20:41 被阅读20次

分页

建立Micropost模型

$ rails g model Micropost

migration修改

class CreateMicroposts < ActiveRecord::Migration
  def change
    create_table :microposts do |t|
      t.string :title
      t.text :content
      t.integer :user_id
      t.timestamps null: false
    end
  end
end

执行:

rake db:migrate

为id为1的用户创建100条微博记录:
lib/tasks/data.rake

namespace :data do
  task :create_microposts => [:environment] do
    user = User.find(1)
    100.times do |i|
      Micropost.create(user_id :user.id, title: "title-#{i}", content: "content-#{i}")
    end
  end
end

执行:

$ rake data:create_microposts

新建Micropost的controller

rails g controller api/v1/microposts --no-assets

配置路由

namespace :api do
  namespace :v1 do
+   scope path: '/user/:user_id' do
+    resources :microposts, only: [:index]
+   end
end

此时路由为

api_v1_microposts GET /api/v1/user/:user_id/microposts(.:format) api/v1/microposts#index

安装kaminari

gem 'kaminari'

更改user Model

class User < ActiveRecord::Base
 + has_many :microposts
end

更改Microposts Controller

class Api::V1::MicropostsController < Api::V1::BaseController
+ def index
+ user = User.find(params[:user_id])
+ @microposts = paginate(user.microposts)
+ end
end

实现paginate函数

class Api::V1::BaseController < ApplicationController
  def paginate(resource)
    resource = resource.page(params[:page] || 1)
    if params[:per_page]
      resource = resource.per(params[:per_page])
    end
    return resource
  end
end

实现Helper方法

module ApplicationHelper
+ def paginate_meta_attributes(json, object)
+   json.(object,
+     :current_page,
+     :next_page,
+     :prev_page,
+     :total_pages,
+     :total_count)
+   end
end

修改app/api/v1/microposts/index.json.jbuilder

json.paginate_meta do
  paginate_meta_attributes(json, @mircoposts)
end
json.microposts do
  json.array! @microposts do |micropost|
    json.(micropost, :id, :title, :content)
  end
end

相关文章

  • 构建API服务器3

    分页 建立Micropost模型 migration修改 执行: 为id为1的用户创建100条微博记录:lib/t...

  • 构建API服务器2

    1. 实现unauthenticated!方法 2. 增加授权 修改app/controllers/api/v1/...

  • 构建API服务器6

    文档 将slate集成到项目中 集成slate 配置构建文件app/docs/slate/config.rb 现在...

  • 构建API服务器5

    Version 2 API 修改config/routes.rb 生成API::V2::UsersControll...

  • 构建API服务器4

    限制API调用频率 使用redis-throttle 集成到Rails中,修改config/application...

  • 构建API服务器1

    本文来源于ruby-chinahttps://ruby-china.org/topics/25822 1. 新建项...

  • Python3:发邮件

    利用python的组件进行发邮件1.构建邮件服务器设置、连接服务器、登录服务器2.构建邮件内容3.发送邮件,收件人...

  • IDEA+Maven+Embedded Jetty+Jersey

    一、简要介绍 最近做的项目用到了嵌入式Jetty当服务器,并用Jersey来构建Restful api,看了老师的...

  • API自动化测试与持续集成

    目的 如何使用SuperTest测试框架,进行API测试 如何将API测试与构建工具结合 如何将API测试、构建工...

  • Golang:使用 httprouter 构建 API 服务器

    https://medium.com/@gauravsingharoy/build-your-first-api-...

网友评论

      本文标题:构建API服务器3

      本文链接:https://www.haomeiwen.com/subject/dcomdttx.html