Вопрос по reactjs, json – Как создать конечную точку веб-службы для локально обслуживаемого файла JSON

1

Я работаю через учебник React.js, найденный здесь:http://facebook.github.io/react/docs/tutorial.html

При добавлении комментариев на страницу с использованием AJAX и метода post, я получаю501 (Unsupported method ('POST')).

Я знаю, что вы не можете отправить команду JSON post локально (похоже на этот вопрос:angularjs $ http.post приводит к 501 неподдерживаемому методу ('POST')) а я пользуюсьpython -m SimpleHTTPServer.

Как настроить конечную точку веб-службы для файла JSON?

Ваш Ответ

1   ответ
2

Если вы посмотрите наreactjs / обучающая реагируют на github есть пример сервера, использующего node.js:

git clone [email protected]: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.
 */
Спасибо за это! Также хорошо отметить, что в этом репо используется React 0.8, поэтому учебник немного изменился, но с помощью узла с экспресс-сервером все получилось. joeyc
github.com/reactjs/react-tutorial новый дом репетитора в репо. Paul O'Shannessy
Я вижу, что вам пора идти, но если другие приходят и видят это до того, как мы его обновим, я добавил серверы на паре других языков (python, ruby), если node.js не ваша вещь :) Смотрите PR (и не стесняйтесь добавлять предложения на других языках!) -github.com/reactjs/react-tutorial/pull/5 Paul O'Shannessy

Похожие вопросы