【发布时间】:2016-04-11 18:41:08
【问题描述】:
我一直在尝试对我的服务器进行 API 调用,以删除开发数据库上的用户记录帮助。当我使用 Fiddler 通过 DELETE 操作调用 URL 时,我能够立即删除用户记录。当我再次使用 DELETE 操作从下面的脚本中调用相同的 URL 时,我收到此错误:
{"Message":"请求的资源不支持http方法'DELETE'。"}
我在下面的脚本中更改了网址。我使用的网址绝对正确。我怀疑我的代码中有一个我没有发现的逻辑错误。我的脚本:
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
【问题讨论】:
-
消息说问题出在 API 上,而不是请求本身,
The requested resource does not support http method 'DELETE' -
我放在上面的代码是一个脚本的一小部分,它大约有 1000 行长,并命中了近 20 个不同的 API 调用,执行 GET、POST、PUT 和 DELETE。从我的脚本调用时,每个单独的 DELETE 调用都会失败,但在放入 Fiddler 并单独调用时工作得很好。我的脚本正在做的事情和 Fiddler 正在做的事情之间存在一些差异。我怀疑这与通过我的脚本 VS 通过 Fiddler 发送的请求标头有关。
-
我发现了我的问题所在。我需要这样做:
request = Net::HTTP::Delete.new(uri)。这立即解决了我的问题