【问题标题】:Rails API - POST request using multipart/form-data format gives ActionController::ParameterMissingRails API - 使用 multipart/form-data 格式的 POST 请求提供 ActionController::ParameterMissing
【发布时间】:2021-04-19 15:05:39
【问题描述】:

我能够以原始 JSON 格式将以下正文发布到我的 API 中,没有任何问题:-

{
    "job":{
    "title": "Job 1",
    "description": "Job 1",
    "date": "2021-03-11T16:59:03.194Z",
    "budget": "0.0",
    "awarded": true,
    "client_id": 1,
    "location_id": 86,
    "tag_ids":[25]
    }
}

我现在想在邮递员中使用文件上传选项,因为我已经向这个对象添加了图像。使用 multipart/form-data Content-Type 时,您只能通过 Postman 附加文件 - 但它不起作用并告诉我“作业”参数丢失..

我已经设置了哈希的键,例如:-

job[title]
job[description]
job[date]

..等等

我最初将 Content-Type 保留为空白,因此它默认为正确的(multipart/form-data),它给出:-

"status": 400,
"error": "Bad Request",
"exception": "#<ActionController::ParameterMissing: param is missing or the value is empty: job\nDid you mean?  controller

当我将 Content-Type 显式设置为 application/json 时,我得到:-

"status": 400,
    "error": "Bad Request",
    "exception": "#<ActionDispatch::Http::Parameters::ParseError: 783: unexpected token at '----------------------------632616788333464717206731\r\nContent-Disposition: form-data; name=\"job[title].......etc

我的控制器:-

  def create
    @job = Job.new(job_params)
    if @job.save
      render json: @job, status: :created
    else
      render json: @job.errors, status: :unprocessable_entity
    end
  end

  def job_params
    params.require(:job).permit(:title, :description, :date, :budget, :awarded, :client_id, :location_id, tag_ids: [])
  end

我尝试过的:-

  • 格式化表单数据键而不加前缀 job - 没有帮助。

图片:-

【问题讨论】:

  • 我很困惑,你是通过 AJAX 发送 JSON 吗?还是通过 HTTP 表单 POST 数据?
  • 不,@Fravadona - 我正在使用 Postman - postman.com - 我添加了图片来显示两个请求。

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-5 postman


【解决方案1】:

在意识到失败请求的输出 cURL 脚本确实有效后,我找到了解决方案。

问题出在我的标题中 - 自动生成的标题中的默认 Content-Type 设置为:-

multipart/form-data; boundary=&lt;calculated when request is sent&gt;

我没有选中它,并添加了我自己的:-

multipart/form-data

将其保留为默认值解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多