나는 주문형 전송을 위해 전자 상거래 레일 애플리케이션과 Postmates를 통합하려고 노력했습니다. 테스트 용으로 컨트롤러와 뷰를 빌드하고 내 경로 파일 (내 dev 환경에 빌드 됨)에 구성했습니다. 참고로, 여기 Postmates의 설명서입니다 : docs은 여기에 기술적 인 블로그 게시물입니다 : blogHTTParty 레일 앱에서 Postmates API 사용
경로 파일 :
resources :postmates do
member do
post 'get_delivery'
end
end
컨트롤러 :
require 'httparty'
require 'json'
class PostmatesController < ApplicationController
def get_delivery
api_key = **hidden**
@customer = 'cus_K8mRn4ovuNyNKV'
@urlstring_to_post = 'https://api.postmates.com/v1/customers/' + @customer + '/delivery_quotes'
@result = HTTParty.post(@urlstring_to_post.to_str,
:body => { :dropoff_address => "205 E 95th Street, New York, NY 10128",
:pickup_address => "619 W 54th St, New York, NY 10019"
}.to_json,
:basic_auth => { :username => api_key },
:headers => { 'Content-Type' => 'application/json' })
end
end
뷰 :
<div class="container">
<%= form_tag url_for(:controller => 'postmates', :action => 'get_delivery'), :method => 'post' do %>
<%= submit_tag "Get Delivery", :action => 'get_delivery', :controller => 'postmates'%>
<% end %>
</div>
<p>Result: <%= @result %></p>
다음은 API의 응답입니다.
{"kind"=>"error", "code"=>"invalid_params", "params"=>{"dropoff_address"=>"This field is required.", "pickup_address"=>"This field is required."}, "message"=>"The parameters of your request were invalid."}
IT는 하차 및 픽업 주소가 HTTP 요청 제출되지 않는 나에게 보인다. 누구든지 내가 사소한 구문 오류 또는 뭔가 만들고있어 말해 줄 수 있습니까? 이 응답을 받는다는 사실은 내 인증이 잘되고 URL도 그렇다는 것을 의미합니다. 어떤 아이디어?
감사합니다.
굉장한 남자는 일했다! 고마워요! 이것이 API 사용에 대한 나의 첫 시도 였기 때문에 투쟁이었습니다. 다행히도 이것은 우발적 인 사람을 사용하고자하는 다른 미숙 한 레일 개발자에게 도움이 될 것입니다. – Haymaker87