Saya ingin pengguna dalam aplikasi ruby on rails saya dapat mengirimkan tiket ke sistem manajemen tiket eksternal saya, squishlist.com. Mereka memiliki api dan instruksi sebagai berikut. Anda perlu mengautentikasi dan mendapatkan token lalu mengirimkan tiket dengan token tersebut. Dari 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}
Untuk tujuan pengujian, saya membuat pengontrol, rute dan tampilan (halaman) untuk pengujian. Pada pengontrol saya, saya memiliki yang berikut ini
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
Dan kemudian saya memiliki halaman yang saya buka untuk melihat hasil dari tindakan pengontrol dan memiliki kode berikut.
<p><%= @result %></p>
Saya tahu bahwa ini berfungsi secara umum karena tanggapan yang saya terima selama ini. Json saya berbeda dari contoh karena bidang yang telah saya tetapkan dalam daftar squish. Adakah yang bisa membantu saya dalam masalah ini?
Saya kira masalah sebenarnya adalah saya tidak bisa benar-benar melihat seperti apa json itu dan apakah itu bahkan hampir cocok. Saya benar-benar tidak tahu banyak tentang json. Haruskah saya menggunakan sesuatu yang mungkin mudah. Haruskah saya menggunakan ajax untuk mengirimkan ini. Bantuan apa pun sangat dihargai. Saya suka komunitas di sini.
sumber
:headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json'}
. Catatan: header tidak boleh dikonversi ke JSON, ini diharapkan menjadi hashThe
:query_string_normalizer
pilihan juga tersedia, yang akan menimpa normalizer bawaanHashConversions.to_params(query)
sumber
request.options[:body]
tetapi mengirim string yang benar. Ini harus menjadi jawaban sebenarnya untuk pertanyaan itu.query_string_normalizer
harus digunakan untuk string kueri, bukan data posting.ruby-doc.org
sudah mati, dokumentasinya ada di httparty doc