إعادة تحميل مباشرة
مذكرة الامتثال
أهداف هذا الدليل express ويفترض tsoa-nextسياسة الدعم الحالية: Node.js 22 أو أكثر. نحن نتحقق من الدعم في جميع أنحاء LTS السابقة، و LTS الحالية، و Node (في سي آي) الأمثلة الواردة أدناه: npm.. pnpmو yarn متغيرات حيث تختلف القيادة نحن نفترض أن تركيبك يشبه الوصية getting started
المرجع ذو الصلة بالطلب: @SpecPath.. SpecPathOptions.. SpecRequestContextو SpecCacheHandler.
TIP
سنستخدم nodemon و ts-node لإعادة التحميل، لكن أيّ أداة تسمح لنا بالدخول في عملية إعادة التحميل ستفي بالغرض. البدائل يمكن أن تكون مزيجاً من tsc -w and triggering tsoa spec-and-routes استخدام onchange.
** ما سنتحدث عنه:**
Reloading Code
Installing nodemon and ts-node
npm i -D nodemon ts-node concurrentlypnpm add -D nodemon ts-node concurrentlyyarn add -D nodemon ts-node concurrentlyخلق عقيدة رمزية
الآن، دعونا نخلق nodemon.json داخل الملف الجذري لمشروعنا الذي يبدو هكذا:
{
"exec": "ts-node src/server.ts",
"watch": ["src"],
"ext": "ts"
}أضف السيناريو
لنبدأ هذه المجموعة تلقائياً بمدير الطرد dev النص )النص(npm run dev.. pnpm devأو yarn devو، بينما نحن فيه، إضافة build و start أوامرنا package.json:
{
"name": "starter",
"version": "0.0.1",
+ "scripts": {
+ "dev": "concurrently \"nodemon\" \"nodemon -x tsoa spec-and-routes\"",
+ "build": "tsoa spec-and-routes && tsc",
+ "start": "node build/src/server.js"
+ },
"dependencies": {
// ...
}تشرف على تجربتنا مع المطور @SpecPath
@SpecPath(...) يَتْركُ a متحكم يَفْضحُ a عينة حية أَو أطباء نقطة نهاية بدون قراءة swagger.json أو openapi.yaml من القرص في وقت الطلب وهذا يجعل من المناسب لتدفقات العمل الإنمائي حيث تريد الوثائق المتولدة أن تبقى متزامنة مع نفس البيانات الفوقية التي تستخدمها طرقك بالفعل.
Installing adocs UI peer
إخترْ هدفَ docs UI تُريدُ أَنْ تَستعملَ:
- Express:
npm i swagger-ui-express/pnpm add swagger-ui-express/yarn add swagger-ui-express- Koa:npm i swagger-ui-koa/pnpm add swagger-ui-koa/yarn add swagger-ui-koa- Hapi:npm i hapi-swagger/pnpm add hapi-swagger/yarn add hapi-swagger- Redoc:npm i redoc/pnpm add redoc/yarn add redoc- RapiDoc:npm i rapidoc/pnpm add rapidoc/yarn add rapidoc
معرضاً لنقطة نهاية مُصفّاة مُراقبة
ملحق واحد أو أكثر @SpecPath(...) مصممون لجهاز التحكم الحالي:
import { Controller, Get, Route, SpecPath } from 'tsoa-next'
@Route('users')
@SpecPath()
@SpecPath('openapi.yaml', { target: 'yaml' })
@SpecPath('docs', { target: 'swagger' })
export class UsersController extends Controller {
@Get()
public list(): string[] {
return []
}
}هذا يعطيك:
GET /users/specJSONGET /users/openapi.yamlلليامGET /users/docsfor Swagger UI
لأن نقطة النهاية للأطباء متولدة من نفس البيانات الفوقية التي تدور في مساراتك، إنها تبقى في حالها كما تحرر المتحكمين وتعيد الركض tsoa spec-and-routes.
فحص الوثائق
الآن، عندما نبحر الموقع: 3000/users/docsيجب أن نرى انعكاساً حالياً لمعهدنا

طلبات التوريد Swagger UI
يمكننا أن نختار نقاط النهاية، ونضغط على زر "حاول" ونقدم بعض البيانات عن طريق ملء الاستمارة. عندما نضرب "الطبيعية" هذا الطلب سيرسل إلى خادمنا وسيظهر الرد تحت الشكل

أهداف أخرى مدمجة
إذا كنت تُفضّلُ a UI مختلف، يُغيّرُ target الخيار:
@SpecPath('docs', { target: 'redoc' })-@SpecPath('docs', { target: 'rapidoc' })
إذا كنت في حاجة إلى استجابة كاملة، تمرير معالج في target بدلاً من ذلك يمكنك أن تضيف cache و gate في نفس الخيارات
