【发布时间】:2020-06-16 07:17:10
【问题描述】:
我正在使用 HTTPClient ruby 库向我开发的 REST 服务发出一些基本的 http 请求,我现在想知道在发生错误时如何从服务获取响应(像 400 或 500 这样的状态代码是从服务返回)。
我的服务所做的是在中心返回产品的库存,因此它需要两个参数(在 url 中):产品 ID 和中心 ID。当我通过正确的产品和中心 ID 调用此服务时,该服务会返回 200 - OK 状态和产品库存(例如,8.0 表示该中心有 8 个产品单位)。但是,如果我传递了错误的产品 id(不在我们的数据库中),服务会返回 400 - Bad Request 和一条错误消息,指出该 id 不存在。
所以我在 Ruby 中有如下方法
def stock(product, location)
response = @client.get_content("stock/#{product}/#{location}")
end
@client 是使用我配置的 HTTPClient.new 创建的实例。在传递 ''right'' 参数时,它会返回我想要的,所以它配置得很好
我现在的问题是,当服务返回错误状态代码时,会引发 HTTPClient::BadResponseError 异常,我无法在响应变量中检索此错误。
有没有办法从服务获取响应,无论它返回哪个状态码?我尝试使用begin...rescue,我可以获得一些信息,例如状态码和原因短语,但不是响应的内容(错误消息)
【问题讨论】:
标签: ruby httpclient