如何为本地提供的JSON文件创建Web服务端点

时间:2014-09-26 16:52:31

标签: json reactjs

我正在处理这里的React.js教程:http://facebook.github.io/react/docs/tutorial.html

使用AJAX和post方法向页面添加注释时,我得到501 (Unsupported method ('POST'))

我知道你不能在本地发送JSON post命令(类似于这个问题:angularjs $http.post results in 501 Unsupported method ('POST'))而我正在使用python -m SimpleHTTPServer

如何为JSON文件设置Web服务端点?

1 个答案:

答案 0 :(得分:2)

如果你看一下github上的reactjs/react-tutorial,那就是使用node.js的示例服务器:

git clone git@github.com:reactjs/react-tutorial.git && cd react-tutorial
npm install
node server.js

这是server.js文件。

var fs = require('fs');
var path = require('path');
var express = require('express');
var bodyParser = require('body-parser');
var app = express();

var comments = JSON.parse(fs.readFileSync('_comments.json'));

app.use('/', express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

app.get('/comments.json', function(req, res) {
  res.setHeader('Content-Type', 'application/json');
  res.send(JSON.stringify(comments));
});

app.post('/comments.json', function(req, res) {
  comments.push(req.body);
  res.setHeader('Content-Type', 'application/json');
  res.send(JSON.stringify(comments));
});

app.listen(3000);

console.log('Server started: http://localhost:3000/');

/**
 * This file provided by Facebook is for non-commercial testing and evaluation purposes only.
 * Facebook reserves all rights not expressly granted.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
 * FACEBOOK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */