2016-09-22 11 views
0

대기중인 주문을 받기 위해 외부 API를 사용하고 있습니다. 보류중인 주문을 PostgreSQL에 저장하는 GET 요청 메소드를 작성했습니다.레일 GET 요청으로 이전에 다운로드 한 데이터를 가져옴

내가 겪고있는 문제는 각 GET 요청 중에 중복 된 주문이 모두 보류중인 주문 (이전 및 신규)을 다시 다운로드했기 때문입니다.

내 GET 요청 중에는 방법이 있습니까? 이전에 다운로드 한 보류중인 주문에 대해 데이터베이스를 점검하고, 무시하고, 새로 작성한 보류중인 주문 만 다운로드 할 수 있습니까?

REST 보석 내가 사용하고 있습니다 :

나머지 클라이언트 여기

내 작업 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 

답변

0

나는 이것을 알아 냈다. 내 업데이트 된 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 
0

너무 원격 서버의 제어가 있습니까? 이전에 가져 오지 않은 것을 보내도록 업데이트 할 수 있습니까? 그렇지 않다면 날짜 X (마지막으로 가져온 날짜) 이후에 작성된 게시물 만 묻는 것은 어떻습니까? 그렇지 않다면 모든 파일을 가져 와서 db를 체크하고 아직 레코드가 없다면 새로운 레코드를 생성하십시오 (순차 번호는 고유합니다, 시퀀스 번호가 이미 db에 있다면 그 행을 건너 뜁니다).

+0

별도의 방법이있는 POST 요청을 보낼 수 있습니다. 중복 주문을 다운로드하고 싶지 않습니다. POST 요청이 실패하는 경우에만 발생해야합니다. 내 GET 요청에서 데이터베이스에 대한 JSON 데이터를 확인하고 이미 존재하는 경우 건너 뛸 수있는 몇 가지 안전성을 추가하려고합니다. 시퀀스 번호 나 message_guid를 사용할 수 있습니다. – bradbajuz