Feathers: Layanan Publik / Swasta

Dibuat pada 8 Okt 2017  ·  4Komentar  ·  Sumber: feathersjs/feathers

Hai teman-teman! Pertama-tama, saya baru-baru ini menemukan feathersjs dan saya harus mengatakan itu sangat bagus untuk digunakan.
Cara kami dapat mengekspos layanan dengan istirahat atau soket benar-benar menakjubkan.
Saya menggunakannya untuk membangun api REST untuk frontend React, tapi saya masih agak bingung dengan beberapa hal.

Saya tidak tahu di mana harus meletakkan layanan "pribadi" saya. Misalnya, saya memiliki layanan mailer, menggunakan layanan terjemahan untuk mengirim email yang diterjemahkan ke pengguna (ketika mereka mendaftar, lupa kata sandi, ...). Layanan ini tidak akan pernah diekspos dengan api lainnya, ini murni layanan internal. Seorang pengguna, tentu saja, tidak akan pernah bisa mengirim email dengan mengirimkan POST ke /mailer. Tapi tetap saja, sepertinya saya perlu melampirkan layanan saya ke rute dan eksposisi layanan adalah perilaku default. Untuk menonaktifkan akses "eksternal" ke layanan saya, saya harus menggunakan kait seperti hooks.disallow('external') pada semua metode sebelum kait layanan saya, bukan? Apakah saya melewatkan sesuatu atau apakah kami memiliki cara yang lebih sederhana untuk mendefinisikan layanan pribadi? Saya juga tidak suka semua layanan saya (pribadi & publik) di folder yang sama (src/layanan). Haruskah saya mendefinisikan "layanan pribadi" ini dengan cara yang sama sekali berbeda? Seperti, hanya menambahkannya ke aplikasi seperti app.set('mailer', mailer) ini dan kehilangan manfaat dari kait layanan. Bisakah kita menggunakan aplikasi sebagai wadah layanan dan apa cara yang disarankan untuk menyuntikkan layanan ke layanan lain? Dapatkan dari aplikasi? Suka app.service('xxx') ?
Juga, saat menggunakan cli dan menghasilkan layanan. Setiap layanan mendapatkan opsi nama. Untuk apa nama ini digunakan? Ketika kami memanggil app.service(xxx), itu diselesaikan dengan layanan yang dilampirkan ke jalur xxx, bukan?

Terima kasih !

Komentar yang paling membantu

Anda dapat menemukannya sekarang di feathers-plus/feathers-hooks-common#disallow .

Semua 4 komentar

Untuk menonaktifkan akses "eksternal" ke layanan saya, saya harus menggunakan kait seperti hooks.disallow('external')

Ya, Anda harus menggunakan sesuatu seperti:

app.use('/mypath', myservice)
app.service('/mypath').hooks({
  before: { all: [hooks.disallow('external')] } 
})

Haruskah saya mendefinisikan "layanan pribadi" ini dengan cara yang sama sekali berbeda?

Saran saya adalah memiliki namespace pribadi dan kemudian menggunakan pengait global. Kapan pun Anda menginginkan layanan pribadi, beri nama saja seperti itu /private/svc1 /private/svc2 , lalu buat kait aplikasi global yang berlaku secara kondisional disallow('external') .

Anda dapat menyimpan struktur folder sesuka Anda, hanya nama layanan yang penting. Tapi saya melakukan keduanya. Seperti semua layanan DB saya ada di folder DB dan saya juga memberi nama spasi seperti itu db/users ...


Seperti, hanya menambahkannya ke aplikasi seperti app.set('mailer', mailer) ini dan kehilangan manfaat dari kait layanan.

Bukan ide yang bagus. Tetap berpegang pada app.use()


Bisakah kita menggunakan aplikasi sebagai wadah layanan dan apa cara yang disarankan untuk menyuntikkan layanan ke layanan lain? Dapatkan dari aplikasi? Suka app.service('xxx') ?

Cara yang disarankan, dan yang juga saya patuhi, adalah menggunakan Kelas ES6 untuk layanan, dalam hal ini Anda mendapatkan metode penyiapan yang menyediakan objek app .

export default class Service {
 setup(app) {
    this.app = app;
    this.svc2 = app.service('svc2');
  }

  create(data) {
    // use this.svc2 here now 
  }
}

app.use('/service', new Service());

Juga, saat menggunakan cli dan menghasilkan layanan. Setiap layanan mendapatkan opsi nama. Untuk apa nama ini digunakan? Ketika kami memanggil app.service(xxx), itu diselesaikan dengan layanan yang dilampirkan ke jalur xxx, bukan?

Saya tidak menggunakan cli dalam proyek saya karena ini lebih merupakan migrasi dari ekspres daripada yang baru. Jadi saya tidak sepenuhnya yakin tentang aspek itu. Tapi ya ketika kami memanggil app.service('xyz') , itu menyelesaikannya dengan jalur yang Anda tetapkan saat menambahkan layanan app.use('xyz', new Xyz())

Terima kasih @subodhpareek18 , hanya itu

Anda dapat menemukannya sekarang di feathers-plus/feathers-hooks-common#disallow .

Masalah ini telah dikunci secara otomatis karena tidak ada aktivitas terbaru setelah ditutup. Silakan buka masalah baru dengan tautan ke masalah ini untuk bug terkait.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat