gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中记录 API 请求?

转载 作者:行者123 更新时间:2023-12-04 03:33:21 25 4
gpt4 key购买 nike

我有一个 Rails 应用程序,它在/api/v1/...

我希望能够记录对 API 执行的所有请求,并且我知道它们在日志文件中,但是是否有任何替代方法可以永久存储所有请求?

你如何在 Rails 中处理这个问题?

最佳答案

为了上述评论者的利益,稍微扩展了一些解释,因为我只需要这样做。

  • 创建一个新模型来存储每个请求。这个叫ApiRequest .
  • class CreateApiRequests < ActiveRecord::Migration[5.2]
    def change
    create_table :api_requests do |t|
    t.belongs_to :api_key
    t.string :endpoint
    t.string :remote_ip
    t.json :payload
    t.datetime :created_at
    end
    end
    end
  • 在每个 API Controller 中使用“before_action”过滤器来调用一个方法,该方法将创建一个新的 ApiRequest 条目并存储它。
  • module Api
    module V2
    class SomeController < ::ApplicationController

    before_action :log_api_request

    <controller methods>

    我们的应用程序是 API-only,所以我们从顶级 ApplicationController 继承
  • 方法log_api_request按照上面 Carson 的建议创建一个 ApiRequest 对象。
  •   def log_api_request
    ApiRequest.create(
    api_key: api_key,
    endpoint: request.fullpath,
    remote_ip: request.remote_ip,
    payload: params,
    created_at: Time.now.iso8601
    )
    end

    要点是通过从 Controller 方法一致地调用 create 来创建您自己的数据库表/模型来记录 API 请求,因为这不需要任何超出现有组件的附加组件。

    关于ruby-on-rails - 如何在 Rails 中记录 API 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23620903/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com