Apicurio-studio: Mampu mendukung standar AsyncAPI di editor

Dibuat pada 25 Sep 2018  ·  23Komentar  ·  Sumber: Apicurio/apicurio-studio

Karena AsyncAPI memiliki editor AsyncAPI sendiri, akan lebih baik untuk bergabung dengan format dan dukungan visual ini (editor AsyncAPI tidak memiliki opsi ini dan hanya deskripsi yaml -> dukungan visual).
@EricWittmann apa pendapat Anda tentang itu? Atau ini ide gila?

proposal

Komentar yang paling membantu

Segera kita harus mengaktifkan dukungan AsyncAPI secara default (fitur ini saat ini mati secara default, saya percaya).

Semua 23 komentar

Saya ingin melihat editor visual Apicurio untuk AsyncAPI. Saat ini proyek ini tidak memiliki bandwidth rekayasa untuk upaya semacam itu. :(

@EricWittmann terima kasih atas tanggapannya. Saya akan mencoba mencari waktu untuk mengerjakan fitur ini jika tidak terlalu sulit...

Yah saya pikir menambahkan dukungan untuk AsyncAPI adalah pekerjaan yang sangat besar. Tugas pertama mungkin adalah mengimplementasikan lapisan parser/model untuk itu. Untuk OAI saya sudah melakukannya di sini:

https://github.com/apicurio/oai-ts-core

Jadi itu mungkin tempat yang baik untuk memulai - mungkin repositori baru seperti asyncapi-ts-core .

Jika Anda siap untuk hal semacam itu, itu bagus! Saya harus mulai memikirkan cara terbaik untuk mendapatkan dukungan asyncapi ke seluruh Apicurio. Ada sejumlah pertimbangan di berbagai halaman UI.

Untuk apa nilainya, AsyncAPI mulai mengambil beberapa tenaga tambahan. Jadi memberikan dukungan untuk itu di Apicurio adalah naik daftar prioritas. :) Belum ada ETA atau semacamnya - tapi mudah-mudahan kita bisa mulai membuat kemajuan di bidang ini.

Senang mendengar berita ini, @EricWittmann , terima kasih. Saya ingin berpartisipasi, jika akan menemukan cukup waktu.

FWIW, kami sekarang memiliki parser untuk AsyncAPI 2.0.0 . Kami telah mendiskusikan tentang migrasi ke TypeScript. Akan sangat bagus untuk memiliki daftar tugas apa yang perlu dilakukan untuk memiliki AsyncAPI di Apicurio. Mungkin kami bisa membantu :)

Itu menarik, @fmvilas - terima kasih atas petunjuknya. Kami sebenarnya telah membangun implementasi model data terpadu kami sendiri untuk AsyncAPI dan OpenAPI di sini: https://github.com/Apicurio/apicurio-data-models

Pustaka itu ditulis dalam Java dan ditranspilasikan ke dalam TypeScript sehingga kami dapat menggunakannya baik di back-end kami dan juga langsung di UI kami. Ini juga memiliki berbagai fitur seperti dukungan pengunjung penuh, mesin transformasi operasional sederhana, dll...

Ke bagian yang lebih menarik dari komentar Anda - tugas yang perlu dilakukan untuk memiliki AsyncAPI di Apicurio. :) :) Saya pikir hal besar saat ini mungkin adalah dukungan editor. Pada akhirnya saya ingin memiliki kesamaan fitur dengan editor OpenAPI visual kami (yang mencakup validasi dan dukungan pengeditan bersamaan). Namun, saya pikir kontribusi yang bagus (mungkin sementara) dalam jangka pendek adalah mengintegrasikan editor AsyncAPI berbasis teks yang ada ke dalam Apicurio. Itu akan sangat keren dan akan sangat membantu. Saya bisa melihat masa depan di mana editor berbasis teks dan editor visual keduanya merupakan opsi yang didukung. Saya sebenarnya memiliki satu pengguna komunitas yang memintanya - pengembang senior mereka tidak menyukai editor visual dan malah menginginkan editor teks. pergilah.

Selain editor, saya harus memikirkan daftar tugas. Tapi segala sesuatu yang lain akan menjadi tambahan di atas editor (misalnya pembuatan proyek).

Ke bagian yang lebih menarik dari komentar Anda - tugas yang perlu dilakukan untuk memiliki AsyncAPI di Apicurio. :) :)

Aku mendengarmu :)

Nah, seperti yang Anda katakan, mari kita mulai dengan sesuatu yang mudah/lebih mudah. Saya akan memberi tahu Anda segera setelah kami memiliki bandwidth untuk berkolaborasi. Terima kasih!

Kolaborasi akan luar biasa, pasti. Sementara itu, jika Anda memiliki beberapa dokumentasi tentang cara menyematkan editor AsyncAPI ke aplikasi lain, saya mungkin dapat menghapus sesuatu yang menarik sebagai POC dengan cukup cepat.

Saya mengacu pada editor yang ditemukan di taman bermain di sini: https://playground.asyncapi.io/

Saya belum melihat ke dalamnya - jadi saya tidak yakin apakah itu telah dibangun untuk dimanfaatkan dengan mudah di dalam aplikasi lain, tetapi jika demikian maka mudah-mudahan tidak sulit untuk diimpor dan digunakan. Itu akan sangat membantu dalam mengklaim (setidaknya awal) dukungan AsyncAPI dalam Apicurio Studio.

Hai @EricWittmann ,

Saya menghabiskan beberapa waktu untuk menyelidiki hari ini berapa biaya penambahan editor grafis untuk AsyncAPI dan sampai pada awal hasil akhir-akhir ini. Lihat tangkapan layar di bawah - Saya telah membuat ulang struktur yang sama dengan OpenAPI dan menambahkan editor kode yang sudah kita miliki sehingga kita sudah memiliki paritas fitur vs apa yang kita miliki saat ini. Saya sudah mulai dari contoh AsyncAPI yang saya tambahkan sebelumnya.

asyncapi-editor-01
asyncapi-editor-02

Sedikit pemikiran dan pertanyaan yang ingin saya bagikan:

  • Pertama di sisi implementasi: komponen editor baru sudah ada dan saya mengikuti ini dengan menduplikasi komponen yang ada ke dalam mitra AsyncApi* mereka. Sebagian besar waktu hanya mengganti OasDocument dengan AaiDocument , itu tidak begitu elegan ... Namun saya baru saja menggores permukaan dan akan ada perbedaan yang lebih penting antara 2 spesifikasi ... Apakah Anda lebih suka menjaga cara ini dan memiliki 2 set komponen independen atau mencoba untuk saling menguntungkan meskipun akan ada banyak if document.isOpenApi() atau if document.isAsyncApi() sepanjang kode ? Bagaimana menurut anda ?

  • 2 pada proses. Seperti yang Anda katakan sebelumnya, ini mungkin merupakan upaya besar ... Secara teknis tidak sulit tetapi panjang dan teliti ... Jadi saya rasa saya tidak akan memiliki kesabaran atau tidak layak untuk menerapkan seluruh editor spesifikasi sebelum melakukan apa pun. Saya lebih suka melihatnya sebagai tugas berulang di mana saya dapat mengisi beberapa bagian yang dimulai dengan prioritas tinggi ( Channels , DataTypes , Messages , Examples ;- )) kemudian pergi ke prioritas yang lebih rendah ( Servers , Traits dan seterusnya...). Bagaimana menurut anda ? Apakah boleh membagi implementasi pada banyak Permintaan Tarik ?

Saya akan sangat senang membantu karena Anda mungkin telah melihat bahwa Microcks sekarang mendukung tiruan AsyncAPI (dan pengujian dalam beberapa minggu). Jadi itu bisa menjadi pengubah permainan untuk memiliki dukungan Apicurio dan memungkinkan untuk menutupi gaya utama spesifikasi API modern.

cc @fmvilas ;-)

Pertama-tama - selamat atas penambahan dukungan AsyncAPI di Microcks! Saya memang melihat itu ditambahkan baru-baru ini.

Saya punya beberapa pemikiran tentang ini. Pertama adalah saya pikir mungkin masuk akal untuk mencoba dan mendapatkan editor AsyncAPI Playground yang disematkan ke Apicurio Studio jika itu secara teknis "mudah". :) Itu akan menjadi kemenangan cepat dan akan memberi kami dukungan "beta" yang masuk akal untuk mengedit dokumen AsyncAPI di Apicurio Studio.

Setelah itu, kita bisa fokus untuk membuat editor visual.

(1) Adapun pertanyaan Anda tentang implementasi - saya pikir menduplikasi komponen dan memodifikasinya agar sesuai dengan AsyncAPI adalah pendekatan yang tepat dalam jangka pendek. Alasannya adalah cukup mudah untuk melakukan refactor nanti untuk berbagi komponen di dua editor, tetapi lebih dari itu adalah kami akan mengimplementasikan kembali seluruh UI Studio di React di beberapa titik. Jadi upaya besar apa pun yang kami lakukan dalam implementasi Angular saat ini akan sia-sia. Lebih baik melakukan sesuatu dengan cepat karena itu harus diulang nanti.

(2) Saya setuju bahwa upaya ini secara teknis tidak sulit tetapi panjang dan teliti. :) Saya pikir masuk akal jika implementasinya dipecah menjadi beberapa PR - semoga kami juga dapat membagi pekerjaan di beberapa kontributor.

@fmvilas Apakah editor ditemukan di sumber terbuka AsyncAPI Playground (saya berasumsi ya) dan juga dapat dengan mudah diintegrasikan ke alat lain seperti Apicurio Studio?

(jika ya, ada petunjuk tentang dokumentasi howto akan luar biasa)

Terima kasih @EricWittmann !

Saya melihat sekilas taman bermain AsyncAPI terlebih dahulu tetapi tampaknya memiliki komponen sisi server di NodeJS. Jadi saya berpikir bahwa integrasi tidak akan semudah itu ... itu sebabnya saya menjelajahi cara editor ;-)

Saya harus bisa meluangkan lebih banyak waktu untuk itu pada akhir minggu... Jika tidak apa-apa untuk Anda, saya akan mencoba mengirimkan PR pertama bu awal minggu depan. Seharusnya dimungkinkan agar informasi utama dapat diedit ( Version , Contact , License dan Tags ) serta pratinjau hanya-baca dari Channels di kolom sebelah kiri.

Ini open source, Anda dapat menemukannya di sini . Namun, kami sedang mengerjakan yang jauh lebih baik dengan pelengkapan otomatis, kesalahan yang dilaporkan dalam editor itu sendiri dengan "menggarisbawahi" baris dan kolom yang salah, dll. Ini sebenarnya yang terlihat di AsyncAPI Hub , yang pada akhirnya akan menggantikan Playground. Yang ini belum open source tetapi akan segera, sebelum akhir tahun pasti, dan itu dilakukan di React menggunakan editor Monaco (editor yang mendukung VS Code).

Tetapi mengingat Anda menggunakan Angular di Apicurio Studio, saya tidak yakin itu akan membantu. Saya mendengar mungkin untuk menggabungkan React dan Angular tetapi sejujurnya tidak pernah mencoba.

Terima kasih @fmvilas - kami akhirnya akan mengonversi ke React juga (sedang berlangsung). Apakah editor AsyncAPI baru memerlukan komponen server atau hanya React sisi klien? Dan apakah itu dimaksudkan untuk disematkan di proyek lain?

Kami tidak pernah berpikir orang lain mungkin tertarik untuk menyematkannya tetapi seharusnya mudah dilakukan karena itu sudah merupakan komponen yang terisolasi, jadi ya, kami dapat membuatnya mudah disematkan. Komponen ini murni React sisi klien karena Monaco tidak mendukung rendering sisi server.

PR pertama untuk bootstrap editor dalam perjalanan! Lihat #1280

Dan ini satu lagi di #1285 ;-)

Segera kita harus mengaktifkan dukungan AsyncAPI secara default (fitur ini saat ini mati secara default, saya percaya).

Hai @EricWittmann dan semuanya!

Ini satu lagi yang dibawa: Dukungan Operasi, Pesan, OperationTrait dan MessageTrait. Lihat #1313 ;-)

Semua detail dari setiap konsep belum sepenuhnya diimplementasikan sebagai bentuk grafis tetapi kerangka kerja sudah ada.

Halo semua!

Temukan waktu di akhir minggu ini untuk beberapa penyempurnaan baru: inilah PR #1382 lainnya.

Kita sekarang dapat membuat Operasi baru, mengatur jenis Payload dan Header serta memberikan Contoh (berguna sekarang karena kita dapat langsung mengejek AsyncAPI dengan konektor Microcks )

@EricWittmann bagaimana Anda mengaktifkannya?

Untuk wadah apicurio-studio-ui Anda perlu mengatur variabel lingkungan APICURIO_UI_FEATURE_ASYNCAPI ke "true" (sebagai string, bukan boolean), @alizard0 .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat