JSON (JavaScript Object Notation) adalah format pertukaran data. Format ini mudah dibaca dan ditulis. Format ini juga mudah diurai dan dihasilkan oleh mesin. RPC adalah protokol panggilan prosedur jarak jauh; JSON-RPC adalah RPC yang dienkripsi dengan JSON. Ini mirip dengan XML-RPC. Perbedaannya adalah bahwa JSON-RPC tidak memerlukan respons untuk mengirim data ke server.
Kontroler web Odoo membantu dalam membuat modul frontend. Untuk mengetahui lebih lanjut tentang kontroler web Odoo, silakan lihat blog: Kontroler Web di Odoo.
Pada dasarnya, kita memiliki dua jenis parameter permintaan dalam kontroler web Odoo, yaitu permintaan HTTP dan JSON.
HTTP Request:
seseorang dapat mendefinisikan metode untuk mendapatkan permintaan HTTP dengan melewatkan 'HTTP' ke tipe argumen dari http.route(), maka kita akan mendapatkan parameter HTTP sebagai parameter dari metode tersebut.
@http.route('/lead/case_mark_won', type='http', auth='user', methods=['GET'])
def crm_lead_case_mark_won(self, res_id, token):
comparison, record, redirect = MailController._check_token_and_record_or_redirect('crm.lead', int(res_id), token)
if comparison and record:
try:
record.action_set_won()
except Exception:
_logger.exception("Could not mark crm.lead as won")
return MailController._redirect_to_messaging()
return redirect
JSON Request;
Anda dapat mendefinisikan metode untuk menerima permintaan JSON dengan melewatkan JSON ke tipe argumen dari http.route()
. Odoo akan memanggil metode-metode ini menggunakan protokol JSON-RPC. Metode-metode JSON harus mengembalikan JSON. Mereka menerima argumen sebagai parameter yang diberi nama kecuali jika argumen tersebut merupakan parameter JSON-RPC.
Anda memerlukan sebuah berkas .js
dari mana data JSON dikirimkan ke kode Python. Untuk itu, buatlah sebuah berkas test.js
dengan baris-baris berikut:
var ajax = require('web.ajax');
//To define ajax
var test_variable = document.getElementById("test_variable_id").value;
//To get value from the required field.
ajax.jsonRpc('/url, 'call', {
``` 'test_variable' : test_variable,
});```
//json Rpc Call
.then(function (data) {
});
//To receive data from python(non-mandatory)
Di sini, kami meneruskan nilai test_value
ke URL yang sesuai dari kontroler dengan memanggil ajax.jsonRpc
. Setelah melakukan operasi di metode (dari kontroler), seseorang dapat mengembalikan hasil ke berkas js atau menjalankannya dari kontroler itu sendiri.
Langkah berikutnya adalah menambahkan sebuah metode di kontroler yang dapat menangani permintaan Ajax. Metode ini akan mengembalikan data output dalam format JSON. Untuk itu, tambahkan baris-baris berikut ke berkas main.py
dari kontroler.
@http.route('/request', type='json', auth='user', methods=['POST'], website=True, csrf=False)
def submit(self,):
//perform operations here
return {
``` 'result' : result
}```
//if no need to return result then return true