J'aimerais qu'un utilisateur de mon application ruby on rails puisse soumettre un ticket à mon système de gestion de tickets externe, squishlist.com. Ils ont une API et des instructions comme suit. Vous devez vous authentifier et obtenir un jeton, puis soumettre le ticket avec le jeton. 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}
À des fins de test, j'ai créé un contrôleur, une route et une vue (page) pour les tests. Sur ma manette, j'ai les éléments suivants
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
Et puis j'ai une page à laquelle je vais pour voir le résultat des actions des contrôleurs et elle contient le code suivant.
<p><%= @result %></p>
Je sais que cela fonctionne en général grâce aux réponses que j'ai reçues en cours de route. Mon json est différent de l'exemple en raison des champs que j'ai définis dans squishlist. Quelqu'un peut-il m'aider sur ce problème?
Je suppose que le vrai problème est que je ne peux pas vraiment voir à quoi ressemble le json et s'il est même proche de correspondre. Je ne sais vraiment pas grand-chose sur json. Dois-je utiliser quelque chose qui pourrait être facile. Dois-je utiliser ajax pour soumettre ceci. Toute aide est grandement appréciée. J'adore la communauté ici.
la source
:headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'}
. Remarque: l'en-tête ne doit pas être converti en JSON, il devrait s'agir d'un hachageL'
:query_string_normalizer
option est également disponible, qui remplacera le normaliseur par défautHashConversions.to_params(query)
la source
request.options[:body]
mais d'envoyer la chaîne correcte. Cela devrait être la vraie réponse à la question.query_string_normalizer
doit être utilisé pour les chaînes de requête, pas pour les données de publication.ruby-doc.org
sont morts, la documentation est sur httparty doc