2017-09-05 16 views
5

Tôi muốn mọi hapi đường dẫn bắt đầu bằng tiền tố (/api/1) mà không thêm đường dẫn đó vào mỗi tuyến đường. Điều này có thể không?Có thể xác định đường dẫn cơ sở chung trong hapi

Các tuyến đường sau nên có sẵn với đường /api/1/pets và không /pets

const Hapi = require('hapi'); 
const server = new Hapi.Server(); 
server.route({ 
    method: 'GET', 
    path: '/pets' 
}) 

Trả lời

0

Việc đặt cược tốt nhất là nên sử dụng một hằng số trong những con đường -

server.route({ 
    method: 'GET', 
    path: constants.route.prefix + '/pets') 
}); 

và có hằng số định nghĩa trong một constants.js tĩnh nộp

+0

Dường như giải pháp này là dễ nhất và có chi phí leaset. Do đó tôi sẽ chấp nhận nó nhưng các câu trả lời khác cũng cung cấp các giải pháp khả thi. – Bernhard

0

Tôi không thấy tùy chọn như vậy trong Hapi docs. Tuy nhiên, tôi có thể đề xuất cho bạn một giải pháp nhỏ. Thực hiện một số chức năng:

function createRoutePath(routePath) { 
    return `/api/1${routePath}`; 
} 

Và sau đó sử dụng nó theo cách này:

server.route({ 
    method: 'GET', 
    path: createRoutePath('/pets') 
}); 

UPDATE: Như workaround khác, để lại tất cả như là, và máy chủ web thiết lập proxy. Ví dụ nginx.

+0

Nếu đây là cách duy nhất nó sẽ dễ dàng hơn để chỉ cần sử dụng hằng số trong đường dẫn 'path: prefix + '/ pets''. – Bernhard

+0

Vâng, sử dụng nginx không phải là xấu. Nó được sử dụng rộng rãi trong sản xuất, vì vậy không có vấn đề gì khi thêm một quy tắc nữa. – Lazyexpert

1

Dường như bạn không thể làm điều đó trên toàn cầu cho toàn bộ ứng dụng. Nhưng có khả năng thêm tiền tố cho tất cả các tuyến đường được xác định bên trong plugin:

server.register(require('a-plugin'), { 
    routes: { 
     prefix: '/api/1' 
    } 
}); 

Hy vọng điều này sẽ hữu ích.

Chỉ trong trường hợp, nếu bạn đang cố gắng thêm đường cơ sở thông qua các sự kiện cho tuyến mới, nó sẽ không hoạt động.

+0

Nhưng điều đó có nghĩa là tôi cần phải bọc các tuyến đường của tôi bên trong một plugin? – Bernhard

+0

Nó có, nhưng nó sẽ không thay đổi nhiều. Trên thực tế đó là một cách để mô-đun hóa các ứng dụng hapi mà hapi khuyến khích. – Alexander

Các vấn đề liên quan