Saya merancang API REST untuk sistem tiga tingkat seperti: Client application
-> Front-end API cloud server
-> user's home API server (Home)
.
Home
adalah perangkat rumah, dan seharusnya menjaga koneksi Front-end
melalui Websocket atau jajak pendapat yang panjang (ini adalah tempat pertama di mana kita melanggar REST. Semakin buruk nantinya) . Front-end
sebagian besar Client
permintaan terowongan untuk Home
koneksi dan menangani beberapa panggilan itu sendiri. Terkadang Home
mengirim pemberitahuan ke Client
.
Front-end
dan Home
pada dasarnya memiliki API yang sama; Client
mungkin terhubung Home
secara langsung, melalui LAN. Dalam hal ini, Home
perlu mendaftarkan beberapa Client
tindakan pada Front-end
dirinya sendiri.
Kelebihan untuk REST dalam sistem ini adalah:
- REST dapat dibaca oleh manusia;
- REST memiliki pemetaan kata kerja yang didefinisikan dengan baik (seperti CRUD), kata benda dan kode respons terhadap objek protokol;
- Ia bekerja melalui HTTP dan melewati semua proxy yang mungkin;
Kontras REST adalah:
- Kami tidak hanya membutuhkan gaya komunikasi permintaan-respons, tetapi juga berlangganan-penerbitan;
- Kode kesalahan HTTP mungkin tidak cukup untuk menangani kesalahan komunikasi tiga tingkat;
Front-end
mungkin kembali202 Accepted
ke beberapa panggilan async hanya untuk mengetahui bahwaHome
koneksi yang diperlukan terputus dan seharusnya ada503
; Home
perlu mengirim pesan keClient
.Client
harus pollingFront-end
atau untuk menjaga koneksi.
Kami sedang mempertimbangkan WAMP / Autobahn melalui Websocket untuk mendapatkan fungsionalitas mempublikasikan / berlangganan, ketika saya menyadari bahwa itu sudah terlihat seperti antrian pesan.
Apakah layak mengevaluasi semacam antrian pengiriman pesan sebagai transportasi?
Sepertinya contra antrian pesan adalah:
- Saya perlu mendefinisikan kata kerja CRUD dan kode kesalahan pada tingkat pesan.
- Saya membaca sesuatu tentang "biaya perawatan yang lebih tinggi", tetapi apa artinya?
Seberapa serius pertimbangan ini?
@Jimmy Hoffa
titik valid, terima kasih. Itu benar, tetapi tidak sepenuhnya. Ini adalah database umum, penyimpanan, dan sebagainya. @Javier
terima kasih, itu bagian yang baik dari sebuah jawaban.
@Mike Brown
persis. Silakan lakukan.