API-макет в Mithril для разработки интерфейса, например, jquery-mockjax
Я использую мифрил в IoT. Я пытаюсь изолировать интерфейсную разработку от задач реализации API-интерфейса. В jQuery я использовал jQuery-mockjax и аналогичный механизм в Angular. Я понимаю, что эти библиотеки перехватывают вызов функции ajax и отвечают соответствующим образом данными, которые настроены с использованием $.mockjax (или аналогичных функций).
Механизм, рекомендуемый здесь https://groups.google.com/forum/, не дает гибкости для реализации этого. Нет простого способа использовать макет для нескольких избранных API.
Посмотрев код, я понял, что для его реализации мне нужно получить доступ к функции 'ajax' (или только к разделу обработки XHR), чтобы ее можно было переопределить с помощью моей собственной реализации, которая может высмеивать выбранные API. Проблема в том, что ajax является локальной функцией в библиотеке. Если он отображается как m.ajax, моя библиотека может переопределить его и получить необходимую мне функциональность.
У меня вопрос, есть ли лучший способ добиться того же? Если вы сделали подобные вещи, пожалуйста, поделитесь.
Моя структура кода будет примерно такой:
// in mithril-mockjax.js, implements mockjax function
m.mockjax = function (options) { … }
// in app-api-mocks.js
m.mockjax({
method: GET,
url: /sessions/123,
response: { …}
});
m.mockjax({
method: POST,
url: /sessions,
data: {},
response: { … }
});
Два вышеупомянутых файла вставляются на страницу, когда я нахожусь в режиме разработки. Остальная часть кода остается прежней.
1 ответ
Вы можете сделать это либо издеваться m.request
путем обезьяны-исправления или вы добавляете слой абстракции между m.request
и ваш код, который вы затем можете издеваться.