OpenAPI & Generator Layanan
Skrip Node opsional yang disediakan terpisah dari klien HTTP inti. Hanya digunakan saat menghasilkan tipe TypeScript dan file layanan dari JSON OpenAPI/Swagger.
Fitur opsional: Tidak diperlukan untuk penggunaan inti
Pengguna umum @byeolnaerim/typed-rx-http, /next, atau /rsocket tidak perlu menjalankan skrip ini dan tidak perlu menginstal openapi-typescript di proyek.
Isolasi ketergantungan openapi-typescript
Pembuatan tipe OpenAPI memerlukan openapi-typescript CLI, tetapi paket tidak dimasukkan ke dalam dependensi umum. devDependencies.typescript dari typed-rx-http mempertahankan standar TypeScript 6.0.3, dan hanya menggunakan lingkungan npx sementara di skrip node auto OpenAPI.
Pada tahap pembuatan OpenAPI dasar, openapi-typescript dan [email protected] dijalankan bersamaan, sehingga tidak mengubah atau menggunakan versi TypeScript/openapi-typescript yang diinstal di proyek pengguna.
Jika perlu, seluruh perintah dapat dikunci dengan openApiTypescriptCommand.
Atau Anda juga dapat mengubah hanya versi paket yang membentuk perintah dasar.
Pertama: Siapkan file proyek yang akan ditunjuk oleh commonServiceFile
Sebelum commonServiceFile muncul dalam contoh generator, Anda harus memahami file ini terlebih dahulu. commonServiceFile adalah jalur file yang dimiliki proyek yang mengimpor fungsi HTTP umum dari layanan yang dihasilkan, bukan opsi untuk membuat file. Nama file dapat ditentukan secara bebas seperti rxjsHttpService.ts, commonService.ts, dll.
Kode lengkap minimum
File di bawah ini membuat createHttpClient sekali di proyek dan mengekspor callApi dan callApiStream agar layanan yang dihasilkan dapat digunakan kembali. Jika tidak memerlukan cache atau otentikasi sesi, Anda dapat memulai dari struktur ini.
rxjsHttpService.ts
tsKode lengkap termasuk cache Session/CSR/SSR
Jika layanan yang dihasilkan menggunakan callApiClientCache atau callApiServerCache, atau jika Anda ingin menangani header dan otentikasi sesi secara umum di Next.js, perluasan dilakukan dengan bentuk lengkap berikut.
rxjsHttpService.ts
tsMetode eksekusi
File yang dihasilkan
Pengaturan default menghasilkan file-file di bawah ini.
apiUnionArrays.tsmembuat array konstanta readonly untuk enum parameter query, path, header, dan cookie, serta menangani items.enum dari parameter query array.
Opsional: Menghubungkan Swagger backend dengan commonService proyek
Mulai dari sini adalah contoh menghubungkan generator ke proyek nyata. WebFlux/webflux-fe-dev-assistant hanyalah salah satu cara untuk menyediakan Swagger dan bukan ketergantungan yang wajib.
Siapkan dokumen Swagger
Swagger bisa berasal dari Springdoc, alat OpenAPI lainnya, atau file yang ditulis secara manual. Jika menggunakan endpoint fungsional WebFlux, webflux-fe-dev-assistantAnda juga dapat menggunakan cara untuk menyediakan dokumen Swagger.
Contoh pembuatan dengan menyatakan opsi di proyek
Anda dapat menyatakan endpoint backend, swagger.json yang akan disimpan, jalur output tipe/layanan, dan commonServiceFile sesuai dengan struktur proyek.
generateSwagger.cjs
jsDalam lingkungan di mana dokumen tidak dapat diterima melalui HTTP, Anda dapat menggunakan generateSwaggerFromFiledengan opsi output yang sama.
commonServiceFile adalah jalur target import
commonServiceFileadalah jalur file yang dimiliki proyek yang mengimpor callApi, callApiStream, dan pembungkus cache dari layanan yang dihasilkan. Ini bukan opsi untuk membuat atau menimpa file ini.
ApiBusinessService.ts
tsContoh di mana hasil pembuatan ditempatkan di proyek
File umum yang ditentukan dengan commonServiceFile seperti rxjsHttpService.ts dikelola langsung oleh proyek. Hasil di bawah auto dan @types/auto akan dibuat ulang jika dokumen berubah.
Aturan nama file dan fungsi
Nama file layanan ditentukan oleh dua segmen pertama dari URL, dan nama fungsi ditentukan oleh segmen ketiga dan seterusnya. Variabel path disertakan dalam nama fungsi dalam bentuk By + PascalCase.
GET /api/business/workplaces/search
ApiBusinessService.ts → workplacesSearch({ params })
GET /api/business/workplaces/{id}
ApiBusinessService.ts → workplacesById({ path })
GET /api/orders/history/search
ApiOrdersService.ts → historySearch({ params })
POST /oauth2/login
Oauth2LoginService.ts → post({ body })
Argumen pemanggilan fungsi pembuatan
GeneratedServiceUsage.tsx
tsxKunci parameter query dari layanan yang dihasilkan adalah params, variabel path adalah path, dan body permintaan adalah body. Di dalam fungsi pembuatan, masing-masing akan diubah menjadi ServiceArguments dari queryString, pathVariable, dan body.