Ruby 无法使用RocketPants客户端发送post或put参数
我正在使用编写一个api客户端,并试图使用gem中包含的HttpParty来读取、创建、更新和销毁资源 阅读和销毁作品很好,但我在创建和更新资源(在下面的示例中,事件)时遇到了问题 具体而言,我正在尝试以下方法:Ruby 无法使用RocketPants客户端发送post或put参数,ruby,httparty,rocketpants,Ruby,Httparty,Rocketpants,我正在使用编写一个api客户端,并试图使用gem中包含的HttpParty来读取、创建、更新和销毁资源 阅读和销毁作品很好,但我在创建和更新资源(在下面的示例中,事件)时遇到了问题 具体而言,我正在尝试以下方法: def create_event params post "events", :body => { :event => params }, :transformer => Event end 但在API方面,它总是给我 Rendering error for A
def create_event params
post "events", :body => { :event => params }, :transformer => Event
end
但在API方面,它总是给我
Rendering error for ActionController::ParameterMissing:
key not found: event
即使我在发帖请求中包含了它
但是,当我尝试直接使用HTTParty时,如下所示:
HTTParty.post(
"http://localhost:3000/1/events",
:headers => {
'Authorization' => ActionController::HttpAuthentication::Token.encode_credentials("test token")
},
:body => {
:event => {
:name => "test"
}
}
)
它可以工作,所以不可能是API不工作。这种方法有两个缺点:我需要手动传递授权,并且结果不会包装为事件
我是否遗漏了正确发送post和put请求的内容?我还查看了文档和规范,但没有找到任何关于发布/放置的内容(例如,请参阅)
这是我的全部代码:
require "ticket_gate/version"
require "rocket_pants"
module TicketGate
class Client < RocketPants::Client
# ---- Setup -----------------------------------
# ----------------------------------------------
version 1
base_uri 'http://localhost:3000'
def initialize access_token = nil
raise 'Please initialize with your api access token' unless access_token
@access_token = access_token
end
def base_request_options
{ :headers => { 'Authorization' => ActionController::HttpAuthentication::Token.encode_credentials(@access_token) } }
end
# ---- Events -----------------------------------
# -----------------------------------------------
class Event < APISmith::Smash
property :created_at
property :end_at
property :id
property :name
property :parent_id
property :start_at
property :ticket_limit
property :updated_at
end
def list_events
get "events", :transformer => Event
end
def get_event id
get "events/#{id}", :transformer => Event
end
#### HERE IS THE PROBLEM
def create_event params
post "events", :body => { :event => params }, :transformer => Event
end
#### HERE IS THE PROBLEM
def update_event id, params
put "events/#{id}", :body => { :event => params }, :transformer => Event
end
def destroy_event id
delete "events/#{id}", :transformer => Event
end
end
end
需要“票门/版本”
需要“火箭裤”
票务模块
类Client{'Authorization'=>ActionController::HttpAuthentication::Token.encode_凭证(@access_Token)}
结束
#----事件-----------------------------------
# -----------------------------------------------
类事件Event
结束
def get_事件id
获取“events/#{id}”,transformer=>Event
结束
####问题就在这里
def create_事件参数
post“events”,:body=>{:event=>params},:transformer=>event
结束
####问题就在这里
def update_事件id,参数
放置“events/#{id}”,:body=>{:event=>params},:transformer=>event
结束
def销毁事件id
删除“events/#{id}”,transformer=>Event
结束
结束
结束
RocketPants在内部使用HTTP请求
从中,我试图找出如何正确传递POST参数,我猜这就是您应该做的:
post "events", :extra_body => { :event => params }, :transformer => Event