with rails creating crear ruby-on-rails json api httparty

ruby-on-rails - creating - rails 5.2 api



POST JSON a API utilizando Rails y HTTParty (2)

La opción :query_string_normalizer también está disponible, que anulará el normalizador predeterminado HashConversions.to_params(query)

query_string_normalizer: ->(query){query.to_json}

Me gustaría que un usuario de mi aplicación Ruby on Rails pueda enviar un ticket a mi sistema externo de gestión de tickets, squishlist.com. Tienen una API e instrucciones de la siguiente manera. Necesita autenticarse y obtener un token y luego enviar el ticket con el token. De squishlist.

# get the token https://api.squishlist.com/auth/?cfg=testcorp&user_key=privatekey&api_key=TEST-KEY-12345 => {"token": "authtoken", "expires": "2010-06-16 13:31:56"} # and then the ticket with the token https://api.squishlist.com/rest/?cfg=testcorp&token=authtoken&method=squish.issue.submit&prj=demo POST data: {''issue_type'': 1, ''subject'': ''Hello, world.'', 4: ''Open'', 5: 10}

Para fines de prueba, creé un controlador, ruta y vista (página) para probar. En mi controlador tengo lo siguiente

require ''httparty'' require ''json'' class SubmitticketController < ApplicationController def submit_a_ticket @cfg = ''xxxsupport'' @user_key = ''4787fsdbbfbfsdbhbfad5aba91129a3f1ed1b743321f7b'' @api_key = ''MrUser411'' @project = ''excelm-manoke'' @url_new_string = ''https://api.squishlist.com/auth/?cfg=''+@cfg+''&user_key=''+@user_key+''&api_key=''+@api_key # https://api.squishlist.com/auth/?cfg=xxxsupport&user_key=4787fsdbbfbfsdbhbfad5aba91129a3f1ed1b743321f7b&api_key=MrUser411 - this is what is created by @url_new_string response = HTTParty.get(@url_new_string.to_str) #submit the string to get the token @parsed_and_a_hash = JSON.parse(response) @token = @parsed_and_a_hash["token"] #make a new string with the token @urlstring_to_post = ''https://api.squishlist.com/rest/?cfg=''+@cfg+''&token=''+@token+''&method=squish.issue.submit&prj=''+@project #submit and get a result @result = HTTParty.post(@urlstring_to_post.to_str, :body => {:subject => ''This is the screen name'', :issue_type => ''Application Problem'', :status => ''Open'', :priority => ''Normal'', :description => ''This is the description for the problem''}) end end

Y luego tengo una página a la que accedo para ver el resultado de las acciones de los controladores y tiene el siguiente código.

<p><%= @result %></p>

Sé que está funcionando en general debido a las respuestas que he recibido en el camino. My json es diferente del ejemplo debido a los campos que he definido en squishlist. ¿Alguien puede ayudarme en este tema?

Creo que el verdadero problema es que realmente no puedo ver cómo es el json y si está cerca de coincidir. Realmente no sé mucho sobre json. Debería estar usando algo que podría ser fácil. Debería estar usando ajax para enviar esto. Cualquier ayuda es muy apreciada. Amo a la comunidad aquí.


Lo resolví agregando .to_json y alguna información de encabezado

@result = HTTParty.post(@urlstring_to_post.to_str, :body => { :subject => ''This is the screen name'', :issue_type => ''Application Problem'', :status => ''Open'', :priority => ''Normal'', :description => ''This is the description for the problem'' }.to_json, :headers => { ''Content-Type'' => ''application/json'' } )