Доступ к правильному запрошенному URL в loopback.js - PullRequest
0 голосов
/ 30 января 2019

У меня есть следующая конфигурация в моем config.json

{
  "restApiRoot": "/eth/v1",
  "host": "0.0.0.0",
  "port": 3001,
  "remoting": {
    "context": false,
    "rest": {
      "handleErrors": false,
      "normalizeHttpPath": false,
      "xml": false
    },
    "json": {
      "strict": false,
      "limit": "100kb"
    },
    "urlencoded": {
      "extended": true,
      "limit": "100kb"
    },
    "cors": false
  }
}

И мой server.js содержит следующее:

'use strict';

var loopback = require('loopback');
var boot = require('loopback-boot');

var app = module.exports = loopback();

app.start = function() {
  return app.listen(function() {
    app.emit('started');

    var baseUrl = app.get('url').replace(/\/$/, '');
    console.log('Web server listening at: %s', baseUrl);

    if (app.get('loopback-component-explorer')) {
      var explorerPath = app.get('loopback-component-explorer').mountPath;
      console.log('Browse your REST API at %s%s', baseUrl, explorerPath);
    }
  });
};

// Bootstrap the application, configure models, datasources and middleware.
// Sub-apps like REST API are mounted via boot scripts.
boot(app, __dirname, function(err) {
  if (err) throw err;
  if (require.main === module) app.start();
});

Выше приведено довольно стандартно.Мой код выглядит следующим образом:

var server = require('../server');
console.log(server.get('url'));

Когда я делаю curl localhost:3001, он печатает http://localhost:3001, как и ожидалось.

Однако, если я добавлю следующее в мой /etc/hosts file

127.0.0.1 localhost locahost-testnet

и попытайтесь получить доступ вот так curl localhost-testnet:3001, он по-прежнему печатает http://localhost:3001, что не то, что я ожидаю.

Что я должен сделать, чтобы получить доступ к URL?(http://localhost-testnet:3001)

1 Ответ

0 голосов
/ 05 февраля 2019

Вы можете получить его, определив remoteHook для вашей модели, как показано ниже:

yourModel.beforeRemote('**', function(ctx, user, next) {
    console.log(ctx.req.headers.host); 
    // this will print "localhost-testnet:3001" in your case
    next();
});

Удаленные перехватчики с подстановочными знаками запускаются до вызова любого удаленного метода. Doc

...