Перезаписать маршруты по умолчанию в sailsjs

У меня есть контроллер по имени UsersController со следующим методом:

module.exports = {
    index: function(req, res, next){
        Users.find({}, function(err, users){
            if(err) return next(err);
            if(!users) return next();

            res.json({"data": users});
        });
    },
}

, который дает мне JSON, как это:

{
    data: [
        {
            name: "Jhon Doe",
            username: "jhon.doe",
            email: "jhon.doe@example.com",
            role: 1,
            logged: 0,
            status: 1,
            id: 1,
            createdAt: "2016-10-28T00:42:04.000Z",
            updatedAt: "2016-10-28T00:42:04.000Z"
        }
    ]
}

И в моем файле config/routes.js

module.exports.routes = {
    'GET /users/GET_ALL': {
        controller: "UsersController",
        action: "index"
    }
}

Если я получу доступ к обоим маршрутам /users/ и /users/GET_ALL/, я смогу получить JSON, показанный выше, у меня вопрос, как я могу получить его (JSON) только по маршруту /users/GET_ALL/ ] и что, получив доступ к другому /users/, пришлите мне error 404 или что я хочу показать?

1
задан 28.10.2016, 04:00
2 ответа

Благодаря ответу Исаака Веги я прочитал немного больше относительно объекта req и я нашел, что у него есть один método названный path который стоит мне для того, чтобы сделать утверждение, которое я хочу, так как сам возвращает uri что находится после host врученный, дав ему один sails lift в приложение:

module.exports = {
    index: function(req, res, next){
        if(req.path == '/users/'){
            res.notFound();
        }else{
            Users.find({}, function(err, users){
                if(err) return next(err);
                if(!users) return next();

                res.json({"data": users});
            });
        }
    },
}

Так хорошо, если я ввожу информацию в компьютер из-за /users/ он возвратит мне один error 404, взамен, если я ввожу информацию в компьютер из-за /users/GET_ALL/ я получаю JSON правильно.

0
ответ дан 24.11.2019, 12:52

Когда ты делаешь попрошенный HTTP любого типа (GET, POST, УДАР В ЛУНКУ, и т.д....) ты можешь проверять в node.js headers объекта, который ты создал req (request пользователя, req.headers), и видеть тип просьбы, которая была сделана. Ты можешь контролировать с модулем fs, что, если просьба состоит на желанном маршруте, в том, что я послал JSON, если нет, что послал страницу ошибки. Например:

if(/*direccion incorrecta*/)
    fs.readFile(__dirname + "/403.html", function(e, d) {
        if(e)
            return response.end("403 Forbiden");
        return response.end(d);
    });
else
    //retornar el JSON

, возвратившись response.end (d), ты посылаешь клиенту контент страницы 403.html, который ты прочитал, показывая ему, что он не может соглашаться на это место. Я надеюсь, что он подает тебя.

1
ответ дан 24.11.2019, 12:52
  • 1
    Спасибо за твой ответ, он я был очень и #250; til, чтобы решать мою проблему. –  Jorius 29.10.2016, 21:22