0

Restful インターフェイスを介して Workorders を追加する Rails アプリがあります。

これはコントローラーコードです:

# 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について何か明確にしてください。安らかな入力が 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動作する可能性があります。

しかし、より良い方法は、HTML からデータをスクレイピングしようとする代わりに、json を送信してクライアントにそれを解析させることです。

Mule のドキュメントを見ると、accept ヘッダーを次のように設定できるはずです。

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 に答える