Как справиться с этой ситуацией при создании REST API?

У меня есть эта проблема, я построил API для отдыха, и я не знаю, как с этим справиться: когда клиент javascript (Marionette.js) отвечает за создание представлений, у меня нет проблем, потому что, как это известно, он просто запрашивает URL (например, example.com/user/37), сервер извлекает json с {id:'37', именем:'Peter', age:'24'} (есть один класс контроллера имени пользователя) и Marionette показывает эти данные в представлении. Но если пользователь войдет в example.com/user/37 через браузер, он покажет просто {id:'37', имя:' Peter ', age: '24'} без просмотра. Что я могу сделать, если я хочу видеть одно и то же представление в обоих случаях?

2 ответа

Если вы пытаетесь обслуживать HTML или JSON с одной и той же конечной точки, то ваш сервер должен принять это решение на основе запроса Accept заголовок. Если запрос Accept заголовок application/json тогда ваш сервер должен вернуть только JSON, иначе верните HTML.

Вы можете видеть, что SoundCloud использует ту же технику для возврата XML или JSON из их API:

Ресурсы по умолчанию возвращаются в формате XML или в формате JSON, если к URI ресурса добавлено расширение.json. Мы рекомендуем вам использовать JSON. Вы также можете отправить соответствующий Accept заголовок, указывающий формат, который вы хотели бы. Например, запрос с заголовком Accept: application/json вернет ресурсы, представленные в виде документа JSON.

То, что вы пытаетесь сделать, практически невозможно.

Зачем?

Когда вы впервые введите URL example.com именно сервер отвечает всеми артефактами, составляющими ваше приложение (html, js, css ...), и браузер отображает его.

Теперь, когда вы вводите там URL example.com/user/37 Сервер отправляет только данные JSON без HTML, JS или CSS, поэтому браузер отображает необработанные данные, которые он получил.

То, что вы пытаетесь сделать, это заставить сервер дать два ответа (JSON или html/js/css) в зависимости от запроса пользователя.

Вы можете сделать это, но это будет настолько сложно, что не стоит усилий.

Другие вопросы по тегам