我一直在尝试对我的服务器进行API调用,以删除dev数据库上的用户记录帮助。当我使用Fiddler通过DELETE操作调用URL时,我能够立即删除用户记录。当我从下面的脚本中再次使用DELETE操作调用相同的URL时,我收到此错误:
{"消息":"请求的资源不支持http方法'删除'。"}
我在下面的脚本中更改了网址。我使用的网址肯定是正确的。我怀疑我的代码中存在一个逻辑错误,我还没有抓到。我的剧本:
require 'net/http'
require 'json'
require 'pp'
require 'uri'
def deleteUserRole
# prepare request
url= "http://my.database.5002143.access" # dev
uri = URI.parse(url)
request = Net::HTTP::Delete.new(uri.path)
http = Net::HTTP.new(uri.host, uri.port)
# send the request
response = http.request(request)
puts "response: \n"
puts response.body
puts "response code: " + response.code + "\n \n"
# parse response
buffer= response.body
result = JSON.parse(buffer)
status= result["Success"]
if status == true
then puts "passed"
else puts "failed"
end
end
deleteUserRole
答案 0 :(得分:0)
事实证明我输错了命令。我需要改变这一行:
request = Net::HTTP::Delete.new(uri.path)
到这一行:
request = Net::HTTP::Delete.new(uri)
通过输入uri.path
,我从API调用中排除了部分网址。当我调试时,我会输入puts uri
,这会显示完整的URL,所以我确定网址是正确的。 URL 是,但我没有在DELETE调用中包含完整的URL。
答案 1 :(得分:0)
如果您在请求删除时错过了要传递的参数,将无法使用
你可以这样做
uri = URI.parse('http://localhost/test')
http = Net::HTTP.new(uri.host, uri.port)
attribute_url = '?'
attribute_url << body.map{|k,v| "#{k}=#{v}"}.join('&')
request = Net::HTTP::Delete.new(uri.request_uri+attribute_url)
response = http.request(request)
其中body是一个哈希表,您可以在其中将查询参数定义为哈希表..在发送请求时,可以通过上面的代码将其添加到url中。
例如:body = { :resname => 'res', :bucket_name => 'bucket', :uploaded_by => 'upload' }