ค้นหาเว็บไซต์

typescript - การกำหนดเส้นทาง router ไปยัง router อื่นในเฟรมเวิร์ก Oak เหมือนกับ ExpressJS


สิ่งที่ฉันต้องการทำให้สำเร็จคือสร้างหลายเราเตอร์และเร้าเตอร์หลักที่ส่งคำขอไปยังเราเตอร์อื่น ๆ

router.use("/strategy", strategyRoutes);
router.use("/account", accountRoutes);

router, strategyRoutes และ accountRoutes เป็นวัตถุ express.Router() ฉันสามารถทำได้ใน express ฉันสงสัยว่ามีวิธีใดบ้างที่จะเลียนแบบสิ่งนี้ใน Oak Framework ของ Deno router ของพวกเขามีฟังก์ชัน router.use แต่รับฟังก์ชัน middleware ไม่ใช่ router อื่น

คำตอบ #1

ปัจจุบันยังไม่รองรับ มีปัญหาเปิดเกี่ยวกับคุณลักษณะนี้:

https://github.com/oakserver/oak/issues/6

คำตอบ #2

หลังจากตรวจสอบปัญหาแล้ว ฉันพบวิธีแก้ไขปัญหานี้ เหตุผลที่ฉันต้องการฟีเจอร์นี้คือเพื่อห่อหุ้มตรรกะการกำหนดเส้นทางในโมดูลต่างๆ วิธีแก้ของฉันคือ:

// router/index.ts

import { Router } from "https://deno.land/x/oak/mod.ts";
import withAccountRoutes from "./account.ts";
import withContractRoutes from "./contract.ts";
const router = new Router();
withAccountRoutes(router);
withContractRoutes(router);
export default router;

// router/account.ts

import { Router } from "https://deno.land/x/oak/mod.ts";

const SUB_ROUTE = "/account";

const withAccountRoutes = (router: Router) => {
  router
    .get(SUB_ROUTE + "/new", ({ request, response, cookies }) => {
      console.log("Cookies : ", cookies);
      response.body = "Will be avaiable soon";
    })
    .get(SUB_ROUTE + "/current", ({ request, response, cookies }) => {
      response.body = "You are the wise one";
    });
};

export default withAccountRoutes;