Вопрос по поводу API Design - PullRequest
0 голосов
/ 11 апреля 2011

Я нахожусь в процессе исследования лучшего "шаблона дизайна" веб-API.В настоящее время я использую Django в качестве веб-фреймворка.Я создал не-AJAX-интерфейс, который приводит к перезагрузке всей страницы при каждом запросе.

Теперь я начинаю включать ajax в интерфейс.Ради этого обсуждения, двумя примерами функциональных возможностей, для которых мне нужно добавить API, является следующая

1) бета-страница: пользователь предоставляет адрес электронной почты.Я хочу сделать ajax-вызов на сервер, чтобы увидеть, существует ли он уже в моей БД.Мой первоначальный дизайн для этого вызова был бы функцией просмотра, похожей на

def check_email(request):
    if request.method == "POST":
           # check db

           # return JSON true/false

2) загрузки изображения профиля, где новое изображение профиля добавляется на вашу страницу без полной перезагрузки страницы

какНасколько я могу судить, лучший способ сделать это - через вызов POST для функции представления.затем в ответе будет возвращаться JSON, который я затем смогу вставить обратно в DOM.

Может кто-нибудь сообщить мне, если я нахожусь на правильном пути в разработке этого API?: Я проверил Django-поршень, и это также довольно полезно.

спасибо

Ответы [ 2 ]

3 голосов
/ 11 апреля 2011

Да, похоже, вы на правильном пути.Одно замечание: чтобы проверить, существует ли адрес электронной почты в БД, в идеале вы должны использовать GET, а не POST, так как информация не обновляется - вы просто спрашиваете, существует ли что-то.

Одна альтернатива возвращениюJSON должен возвращать предварительно отрендеренный HTML, который вы можете внедрить непосредственно в DOM в соответствующей точке.Преимущество этого состоит в том, что вы можете использовать механизм шаблонов Django для визуализации существующих фрагментов шаблона - единственное отличие состоит в том, что вы визуализируете фрагмент отдельно, а не включаете / расширяете его внутри всей HTML-страницы.

2 голосов
/ 11 апреля 2011

Вы находитесь на правильном пути, но я бы использовал request.is_ajax(), чтобы проверить, действительно ли это ajax-запрос на соответствующий ответ.из документов django-запроса

Возвращает значение True, если запрос был выполнен через XMLHttpRequest, путем проверки заголовка HTTP_X_REQUESTED_WITH для строки «XMLHttpRequest».Большинство современных библиотек JavaScript отправляют этот заголовок.Если вы напишите свой собственный вызов XMLHttpRequest (на стороне браузера), вам придется установить этот заголовок вручную, если вы хотите, чтобы is_ajax () работал.

Это позволит вам отделить возвращаемые значения дляпользователи, у которых отключен JavaScript, что позволяет им по-прежнему правильно использовать ваш сайт.Если вы не используете библиотеку javascript, установите ее самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...