首页 > 解决方案 > 如何使 Postman 或 Postman Collection Runner 使用 CSV 文件发送 POST 请求,Rails 强参数

问题描述

在 Rails 6 api 中,我想用 Postman 测试一个具有强参数的控制器。

在控制器中:

class ProcessorController < ApplicationController
...
def create
    file = processor_params[:file]
...
end

private

def processor_params
    params.require(:upload).permit(:file)
  end
end

这个请求需要我上传一个简单的 .csv 文件。
CSV 中的第一行是列标题名称(逗号分隔)。大约 30 行 csv 数据
CSV Headers 分别是:日期、工作时间、员工 ID、工作组

这是一个我想在邮递员中重现的示例夹具:

post '/processor', params: {
     upload: {
         file: fixture_file_upload('report.csv', 'text/csv')
     }
}

如何正确发布参数和正文,以便 rails API 返回 HTTP 200 响应?

我尝试了几种方式设置邮递员请求,包括(1)通过form-data正文,
(2)在此处输入图像描述
(3)这个rawjson:

{
    "upload": {
        "file": {
            "date": "{{date}}",
            "hours worked": {{hours worked}},
            "employee id": {{employee id}},
            "job group": {{job group}}
        }
    }
}

它不工作。我总是遇到错误,例如

 "status": 500,
    "error": "Internal Server Error",
#<NoMethodError: undefined method `permit' for \"file\":String>",
{
    "status": 400,
    "error": "Bad Request",
    "exception": "#<ActionController::ParameterMissing: param is missing or the value is empty: upload>"

标签: ruby-on-railspostmanhttp-poststrong-parameterspostman-collection-runner

解决方案


推荐阅读