LINUX.ORG.RU

Плагин для обмана XmlHttpRequest

 , ,


0

1

Ищу плагин, который переопределит функцию XmlHttpRequest таким образом, чтобы он сначала проверял некий конфиг, в котором заданы предзабитые ответы на определённые запросы и подставлял этот ответ вместо реального сетевого запроса. Или JS-библиотеку, но желательно именно плагин, чтобы не нужно было модифицировать текст страницы.

★★★★★

сомневаюсь что есть похожее, тут кода на пару строк - просто сделать обертку и проверки добавить

kiotoze ★★★★ ()

Напиши, давно хочу такой :)

zz ★★★★ ()

функцию XmlHttpRequest

Это объект, а не функция.

чтобы он сначала проверял некий конфиг, в котором заданы предзабитые ответы на определённые запросы и подставлял этот ответ вместо реального сетевого запроса

Что значит «реальный сетевой запрос»? Какой ты запрос сделаешь, такой и будет «реальным», о чем ты вообще говоришь то?

somequest ()

Все понял, ты спутал запрос с ответом. Это примерно так делается

xhr = new XMLHTTPRequest
xhr.open("GET", "foo")
xhr.onreadystatechange = function(){
  if(xhr.status == 200 && xhr.readyState == 4 ){
     if(config.check(xhr.responseText)) return doThing(xhr.responseText)
     doCasualThing(xhr.responseText)
  }
}

Вот такой плагин.

somequest ()
Ответ на: комментарий от Vit

Оппа, а вот и наш нулевой плагинщик вылез. Не перевелись еще, стало быть плагины на русской земле.

anonymous ()

A, ну да, в конце xhr.send(null) не забудь, есличо

//fixed

somequest ()
Ответ на: комментарий от somequest

Ты не понял. Как написал Vit, мне нужно мокать XMLHttpRequest. На определённые запросы мне нужно без сетевого взаимодействия сразу ответить нужным текстом. Написать мок я могу, но у меня хватает дел, я хочу готовый мок, оформленный в виде плагина с удобным интерфейсом для ввода конфигурации (URL запросов, фильтр, ответ, возможно динамический). Это нужно для эмуляции бэкэнда при разработке фронтэнда.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

На определённые запросы

Запросы кто делает? Пушкин? То что ты пишешь, это реально бред какой-то.

Это нужно для эмуляции бэкэнда при разработке фронтэнда.

Локальные сервера отменили.

Ладно, оставлю вас наедине с плагинщиком, у вас, свои особые методы разработки, плагинные, не буду мешать.

somequest ()
Ответ на: комментарий от Legioner
fetch = function(request){
if(request in config) return setTimeout(function(){doThing(config[request])})
xhr = new XMLHTTPRequest
xhr.open("GET", request)
xhr.onreadystatechange = function(){
  if(xhr.status == 200 && xhr.readyState == 4 ){
     doThing(xhr.responseText)
  }
}
}
somequest ()
Ответ на: комментарий от Legioner

мок

Надо же, это даже название какое-то *специальное* имеет. А че сразу не «кюрированная категориальная монада»? Так солидней, переименовывайте.

somequest ()
Ответ на: комментарий от Legioner

Как написал Vit, мне нужно

А, ну если Он написал, значит действительно нужно. Иксперт зря словами не разбрасывается.

anonymous ()
Ответ на: комментарий от Vit

Тебя тут уже который раз обсирают (и далеко не только анонимус) по счету? Может пора завязывать? Сколько можно обосранным то ходить, воняет же от монитора.

anonymous ()
Ответ на: комментарий от Vit

Публика от твоих циклов еще в себя не пришла, а ту уже за моки взялся. Так из под стола не вылезешь.

anonymous ()
Ответ на: комментарий от somequest

Небольшой фикс, пропустил пару деталек:

fetch = function(request){
if(request in config) return setTimeout(function(){doThing(config[request])})
var xhr = new XMLHTTPRequest
xhr.open("GET", request)
xhr.onreadystatechange = function(){
  if(xhr.status == 200 && xhr.readyState == 4 ){
     doThing(xhr.responseText)
  }
}
send(null)
}
//fixed

somequest ()
Ответ на: комментарий от somequest

1. Твой код требует адаптации javascript-кода на переход на твой fetch. JS позволяет просто переопределить XMLHttpRequest и возвращать «обёртку» с интерфейсом, аналогичным стандартному XMLHttpRequest, таким образом адаптация javascript-кода не потребуется (кроме включения кода этой обёртки до всего остального кода).

2. Плагин позволяет автоматически делать инъекцию кода этой обёртки без изменения HTML-кода. Т.е. во фронтэнде вообще ничего менять не надо (пока речь идёт о XMLHttpRequest-е).

3. Твой конфиг слишком примитивный, чтобы быть полезным на практике, нужно чуть больше функционала (не просто матчинг по URL, а более гибкий матчинг, поддержка всех HTTP методов; отдача разного вида контента: текста, JSON, XML и тд; настройка заголовков) и желателен удобный user interface для работы со всем этим, чтобы не писать это всё в виде огромной JS или JSON простыни.

Legioner ★★★★★ ()
Ответ на: комментарий от Legioner

Что то я сомневаюсь, что ты с ткими понятиями фронтенд пишешь.

somequest ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.