0

我们有一个 Rails 应用程序,我们通过 Restful 界面添加工作订单。

这是控制器代码:

# POST /workorders
# POST /workorders.json
def create
  @workorder = Workorder.new(params[:workorder])

  respond_to do |format|
    if @workorder.save
      format.html { redirect_to @workorder, notice: 'Workorder was successfully created.' }
      format.json { render json: @workorder, status: :created, location: @workorder }
  else
      format.html { render action: "new" }
      format.json { render json: @workorder.errors, status: :unprocessable_entity }
    end
  end
end

添加工单后,响应来自以下代码行:

format.html { redirect_to @workorder, notice: 'Workorder was successfully created.' }

另一个应用程序得到的回报是:

<html><body>You are being <a href="http://ndeavor.ameipro.com/workorders/50">redirected</a>.</body></html>

50 是新的 workorder.id,但我们无法解析它。

有没有办法将 workorder.id 放入返回的标题中?我们需要发送数据的应用程序来知道新的 workorder.id 是什么。

此外,有没有办法知道请求来自其他应用程序,而不是在 Rails ui 中创建的新工作订单。

谢谢你的帮助!!

更新 1

请为我澄清一些关于 REST 的事情。如果 restful 输入是 json,那么控制器会返回 json?如果输入是html,控制器可以响应json还是只响应html?

当我使用 RestClient 进行测试时,是否有办法将此 url 转换为 json 输入或添加一些要求 json 响应的内容?

http://localhost:5000/types?type[id]=318&type[typecode]=test4 
4

1 回答 1

0

response.headers['ETag'] = @workorder.id可能会奏效。

但更好的方法是通过 json 发送并让您的客户端解析它,而不是尝试从 HTML 中抓取数据。

查看 Mule的文档,看起来您应该能够像这样设置接受标头:

props.put("Accept", "application/json");

rails 应用程序将使用format.json块对其进行响应。

render :json或者,您可以通过将调用从块中取出来使其始终以 json 响应respond_to

def create
  @workorder = Workorder.new(params[:workorder])
  if @workorder.save
    render json: @workorder, status: :created, location: @workorder
  else
    render json: @workorder.errors, status: :unprocessable_entity
  end
end
于 2013-04-23T00:30:22.993 回答