Node.js-如果路径/ api-提供api,否则-提供静态文件

时间:2018-09-01 20:07:22

标签: javascript node.js express

对于我来说,我的问题似乎很复杂,但是我认为对于有经验的nodejs开发人员来说,这很简单。我只想让我的api仅在url为/api/~的情况下响应api调用,而在其他任何条件(例如//somethingElse或其他任何内容)下响应api文件。

我的代码:

var app = express();

app.get("/api/users", function (req, res) {
    getUsers(function (err, users) {
        if (err) {
            return res.status(500).send('Error');
        }

        return res.json(users);
    });
});

app.get("/api/user/:_id", function (req, res) {
    getUserById(req.params._id, function (err, user) {
        if (err) {
            return res.status(500).send('Error');
        }

        return res.json(user);
    });
});

谢谢

3 个答案:

答案 0 :(得分:2)

据我所知,您正在寻找express.static

设置目录以服务静态文件

假设您有一个包含静态资产的“公共”目录。

公开

  • img
    • img1.png
    • img2.png
  • css
    • style.css

这是使它们都可访问的方法:

const path = require('path')

express.use(express.static(path.join(__dirname, 'public')))

注意:您指向公共目录的路径可能位于其他位置,只需将相关的路径参数添加到path.join()

现在可以访问以下内容:

  • /img/img1.png
  • /img/img2.png
  • /css/style.css

See Express dos for static files

快速路由器

现在,由于您希望使用以/api开头的各种路由,因此使用express.Router可能会很有用。为每个基本路径创建一个express.Router()。例如,为以'/ api'开头的路由创建一个名为apiRouter的路由。定义路由器后,只需使用基本路径和app.use()调用apiRouter

let apiRouter = express.Router()

// GET /api/users
apiRouter.get('/users', (res, res, next) => {})

// GET /api/users/:id
apiRouter.get('/users/:id', (req, res, next) => {})

// prefix apiRouter with '/api'
app.use('/api', apiRouter)

答案 1 :(得分:2)

在完成所有api路由后,您需要定义/路由,以提供静态文件

在您的情况下:

UIView.animate(withDuration: 0.5, delay: 0.0, options: [], animations: {
        yourView.transform = CGAffineTransform.identity
    }

official docs中了解更多信息。

答案 2 :(得分:0)

我不明白你的话100%.. 我想你的话。

我认为您不是在api网址页面时就连接静态文件。 如果正确,请单击此页面。 How can I get Express.js to 404 only on missing routes?