使用Ruby调用API时查询接口HTTP 200判断为false问题求助
问题排查:创建员工成功但查询接口返回非200状态码
问题描述
刚接触编程,调用自定义Crud类的create方法创建员工时,HTTP状态码判断为200(创建成功),但调用retrieve方法查询该员工时,同样判断HTTP 200却得到false,需要排查原因。
代码片段
# Create Employee @manter_user = Crud.new # 自定义类 # Create $response = @manter_user.create # 自定义方法 puts "Response is: #{$response}" puts "Create Response HTTP code 200: #{$response.code == 200}" # List/Retrieve @id = $response.parsed_response["data"]["id"] puts "@id: #{@id} retornado é o mesmo préviamente criado..." retrieve_response = @manter_user.retrieve(@id) puts "Retrieve Response HTTP code 200: #{retrieve_response.code == 200}"
运行结果
创建环节
Response is: {"status":"success","data":{"name":"Kip","salary":8037.4700000000002546585164964199066162109375,"age":63,"id":7435},"message":"Successfully! Record has been added."}
Create Response HTTP code 200: true
查询环节
Retrieve Response HTTP code 200: false
排查方向
- 先打印查询接口的实际状态码和响应内容,在查询代码中添加:
通过实际状态码(比如404、401、500等)定位问题类型。puts "Retrieve actual HTTP code: #{retrieve_response.code}" puts "Retrieve full response: #{retrieve_response}" - 检查
retrieve方法的实现逻辑:确认@id是否正确拼接到请求URL中、请求方法是否为GET(通常查询接口用GET)、请求头/认证信息是否和create方法一致。 - 验证id的正确性:确认
$response.parsed_response["data"]["id"]获取的id与创建返回的id完全一致,避免拼写错误(比如大小写、键名错误)。 - 考虑接口异步性:部分创建接口是异步写入数据,刚创建完成立刻查询可能找不到数据,可尝试添加短暂延迟后再调用retrieve方法。
- 检查权限差异:确认查询接口是否需要额外的权限验证,而create方法中携带的认证信息在retrieve方法中未正确传递。
内容的提问来源于stack exchange,提问作者Cassia Klaison
相关产品推荐
相关产品推荐

