私は非常にシンプルなAPI(localhost development)をやっています。なぜ、最後のルートがExpressJSサーバーによって決して得られないのか不思議です。ここで
はルートです:
var express = require('express');
var bodyParser = require('body-parser');
var router = express();
// (...) other variables defined here...
router.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'localhost');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
// Works great!
router.get('/', function(req, res) {
res.render('index');
});
// Works great!
router.get('/api/states', function(req, res) {
res.json(states);
});
// Works great!
router.get('/api/cities/:state', function(req, res, state) {
res.json(cities);
});
// Never Works!!
router.get('/api/stores/:state/:city', function(req, res, state, city) {
res.json('{"result": true}');
});
router.use(express.static(__dirname + '/../../www'));
router.set('views', __dirname + '/../../www');
router.engine('html', require('ejs').renderFile);
router.set('view engine', 'html');
router.listen(process.env.PORT || 9000);
私のアプリから、私は最後のルートにこれらのURLを呼び出します。
http://localhost/api/stores/sp/city_name
それは、私は単に、なぜ実現できない、常に404
ですこれは404です。最後のルートは、魔法使いが働かなかったのは、基本的に前のルートからのコピーです(それは素晴らしいです)。
誰かが私がここで間違っていることを指摘できますか?
ps:最後のルートでは、3番目のオプションパラメータを使用する必要があります。
// Never Works!!
router.get('/api/stores/:state/:city/*?', function(req, res, state, city) {
res.json('{"result": true}');
});
しかし、私はそれが定義された2つのパラメータでは動作しないことができれば、それは右の余分なオプションのパラメータ、では動作しません。また、私はこれをしようとしましたか?
アドバイスはありがたいです。
ありがとうございます。
そのルートでインデックスをレンダリングできますか? – JordanHendrix