【发布时间】: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