Ну проблема в следующем:
Я разрабатываю приложение для внешнего интерфейса (используя vue.js), мне нужно искать фиктивный бэкэнд (я не должен издеваться над ним спереди).
В этом приложении я могу делать http-запросы, меня интересуют только GET и PATCH, я хочу делать эти запросы на фиктивный сервер (совместимый с json:api, что означает, что он возвращает правильный заголовок типа содержимого как application/vnd.api+ json).
Этот сервер должен ответить предопределенным (уже жестко закодированным) ответом json, поэтому единственное, что меня волнует, это то, что сервер просматривает URL-адрес в запросе и отвечает существующим файлом или объектом json.
Я видел несколько решений, но не одно, в котором я могу настроить URL-адрес для получения следующим образом (мне просто важно, что если метод и URL-адрес совпадают, я возвращаю файл json), например:
- Запрос: (может быть mysite (точка) com или localhost:PORTNUMBER)
GET http://localhost:PORTNUMBER/api/projects/1000?include=subtree,subtree.vertices,vertices
а затем я отвечаю жестко закодированным файлом json
То же самое с патчем, я на самом деле не забочусь об анализе тела, просто использую совпадение URL-адреса, чтобы предоставить правильный предопределенный ответ, это не создало проблем, поскольку URL-адрес намного проще, и решения, которые я нашел, поддерживают этот тип URL:
ИСПРАВЛЕНИЕ http://localhost:PORTNUMBER/api/projects/500
Есть ли какое-либо решение, в котором я могу настроить свои конечные точки в качестве URL-адреса для запроса GET? Те, которые я нашел, выдают мне неправильную ошибку пути из-за ?include... части URL-адреса, поскольку они обслуживают только такие вещи, как PATH/PATH/RESOURCE, но когда дело доходит до PATH/PATH/ РЕСУРС? любой-странный-адрес-мне-нужен, тогда это вызывает проблему, пока мне просто нужно что-то «столь же простое».
Я попробовал это самостоятельно, используя node.js:
// app.js, my main file
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
// configuring the body parser to accept JSON as well as url encoded values
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json({
type: ['application/json', 'application/vnd.api+json']
}));
var routes = require("./routes/routes.js")(app);
var server = app.listen(3000, function () {
console.log("Listening on port %s...", server.address().port);
});
В маршрутах я определяю это:
// inside /routes/routes.js
var appRouter = function(app) {
// only works if I let it like "api/projects/1000"
app.get("api/projects/1000?include=subtree,subtree.vertices,vertices", function(req, res) {
res.set('Content-Type', 'application/vnd.api+json');
res.send({-----here goes my json response-----});
});
}
module.exports = appRouter;