Rails GET 请求拉下之前下载的数据
Rails GET request pulling down previously downloaded data
我正在使用外部 API 来接收挂单。我已经成功编写了一个 GET 请求方法,可以将任何挂起的订单保存到 PostgreSQL。
我遇到的问题是,在每次 GET 请求期间,我都会创建副本,因为它会再次下载所有挂单(旧的和新的)。
有没有办法在我的 GET 请求期间,我可以检查数据库是否有以前下载的挂单,忽略它们,只下载新创建的挂单?
REST Gem 我正在使用:
休息客户端
这是我的工作 GET 请求:
def download_pf_orders
download_count = 0
uri = "#{PF_TEST_PENDING_API_URL}"
rest_resource = RestClient::Resource.new(uri, PF_TEST_USERNAME, PF_TEST_PASSWORD)
begin
response = rest_resource.get(accept: 'application/json')
json = JSON.parse(response)
json.each do |data|
sequence = data['SequenceNumber']
puts "### Last Sequence Number: #{sequence}"
PfOrder.create(
sequence_number: data['SequenceNumber'],
message_guid: data['MessageGuid'],
hl7_document: data['Hl7Document']
)
download_count += 1
end
rescue => e
puts "### Status Code: #{e.response.code} ###"
end
puts "### Downloaded Orders: #{download_count} ###"
end
你也有远程服务器的控制权吗?您可以将其更新为仅向您发送您之前未获取过的内容吗?如果不是,那么只请求在日期 X(这是您上次获取的日期)之后创建的帖子怎么样?如果没有,则将它们全部获取,然后检查您的数据库,如果您还没有创建一个新记录(序列号是唯一的,对吗?如果序列号已经在您的数据库中,则跳过该行)。
我想通了。这是我更新的 GET 方法:
def download_pf_orders
download_count = 0
uri = "#{PF_TEST_PENDING_API_URL}"
rest_resource = RestClient::Resource.new(uri, PF_TEST_USERNAME, PF_TEST_PASSWORD)
begin
response = rest_resource.get(accept: 'application/json')
json = JSON.parse(response)
json.each do |data|
sequence = data['SequenceNumber']
puts "### Last Sequence Number: #{sequence}"
pending_order = PfOrder.new(
sequence_number: data['SequenceNumber'],
message_guid: data['MessageGuid'],
hl7_document: data['Hl7Document'],
)
sn = pending_order.sequence_number
mg = pending_order.message_guid
hd = pending_order.hl7_document
PfOrder.find_or_create_by(sequence_number: sn, message_guid: mg, hl7_document: hd)
download_count += 1
end
rescue => e
puts "### Status Code: #{e.response.code} ###"
end
puts "### Downloaded Orders: #{download_count} ###"
end
我正在使用外部 API 来接收挂单。我已经成功编写了一个 GET 请求方法,可以将任何挂起的订单保存到 PostgreSQL。
我遇到的问题是,在每次 GET 请求期间,我都会创建副本,因为它会再次下载所有挂单(旧的和新的)。
有没有办法在我的 GET 请求期间,我可以检查数据库是否有以前下载的挂单,忽略它们,只下载新创建的挂单?
REST Gem 我正在使用:
休息客户端
这是我的工作 GET 请求:
def download_pf_orders
download_count = 0
uri = "#{PF_TEST_PENDING_API_URL}"
rest_resource = RestClient::Resource.new(uri, PF_TEST_USERNAME, PF_TEST_PASSWORD)
begin
response = rest_resource.get(accept: 'application/json')
json = JSON.parse(response)
json.each do |data|
sequence = data['SequenceNumber']
puts "### Last Sequence Number: #{sequence}"
PfOrder.create(
sequence_number: data['SequenceNumber'],
message_guid: data['MessageGuid'],
hl7_document: data['Hl7Document']
)
download_count += 1
end
rescue => e
puts "### Status Code: #{e.response.code} ###"
end
puts "### Downloaded Orders: #{download_count} ###"
end
你也有远程服务器的控制权吗?您可以将其更新为仅向您发送您之前未获取过的内容吗?如果不是,那么只请求在日期 X(这是您上次获取的日期)之后创建的帖子怎么样?如果没有,则将它们全部获取,然后检查您的数据库,如果您还没有创建一个新记录(序列号是唯一的,对吗?如果序列号已经在您的数据库中,则跳过该行)。
我想通了。这是我更新的 GET 方法:
def download_pf_orders
download_count = 0
uri = "#{PF_TEST_PENDING_API_URL}"
rest_resource = RestClient::Resource.new(uri, PF_TEST_USERNAME, PF_TEST_PASSWORD)
begin
response = rest_resource.get(accept: 'application/json')
json = JSON.parse(response)
json.each do |data|
sequence = data['SequenceNumber']
puts "### Last Sequence Number: #{sequence}"
pending_order = PfOrder.new(
sequence_number: data['SequenceNumber'],
message_guid: data['MessageGuid'],
hl7_document: data['Hl7Document'],
)
sn = pending_order.sequence_number
mg = pending_order.message_guid
hd = pending_order.hl7_document
PfOrder.find_or_create_by(sequence_number: sn, message_guid: mg, hl7_document: hd)
download_count += 1
end
rescue => e
puts "### Status Code: #{e.response.code} ###"
end
puts "### Downloaded Orders: #{download_count} ###"
end