Возврат сгенерированного SVG с использованием Node / Restify, который может отображаться в браузере? - PullRequest
0 голосов
/ 21 января 2019

В настоящее время я добавляю новую конечную точку GET в существующую службу Node (v8.11.2) + Restify (^ 7.6.0) с целью создания пользовательского SVG на основе параметров запроса.

До сих пор я получил свою конечную точку для возврата текста svg в браузере, просто отправив его обратно в качестве ответа:

res.send('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="400" height="180"> <rect x="50" y="20" rx="20" ry="20" width="150" height="150" style="fill:red;stroke: black;stroke-width:5;opacity:0.5" /> </svg> ');

Так что я решил, что это проблема с типом контента, и попробовал оба

res.header('Content-Type', 'image/svg');

и

res.header('Content-Type', 'image/svg+xml');

перед вызовом res.send с содержимым svg, но браузер пытается загрузить изображение вместо его рендеринга.

Я также пыталсябезуспешно, HTML-страница с голыми костями с URL-адресом в виде изображения src выглядит так:

<html>
  <head></head>
  <body>
    <img src="http://localhost:8080/marker/svg" alt="">
  </body>
</html>

Это урезанный сервер без косточек, который до сих пор воспроизводит те же проблемы:

var restify = require('restify');

function respond(req, res, next) {
  res.header('Content-Type', 'image/svg+xml');
  res.send('<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="400" height="180"> <rect x="50" y="20" rx="20" ry="20" width="150" height="150" style="fill:red;stroke: black;stroke-width:5;opacity:0.5" /> </svg> ');
}

var server = restify.createServer();
server.get('/', respond);

server.listen(8080, function() {
  console.log('%s listening at %s', server.name, server.url);
});

IЯ хотел бы иметь возможность просто нажать localhost: 8080 / api / svg в браузере и увидеть svg, как если бы я только что открыл / обслужил файл svg напрямую.Заранее спасибо!

1 Ответ

0 голосов
/ 23 января 2019

Используйте sendRaw () вместо send ().send () фильтрует содержимое ваших данных.

...