API - используйте GET для добавления, редактирования и удаления? - PullRequest
3 голосов
/ 26 мая 2011

Я создаю API и хочу, чтобы Ajax мог взаимодействовать с ним.API должен позволять вставлять, обновлять и удалять данные.Это хорошая идея, чтобы разрешить любую из этих операций с помощью GET?

Например: http://api.domain.com/insert_person/?name=joe

Мой оригинальный план использования GET для моих методов "получения" (в основном, простопростой запрос к базе данных) и POST для добавления, редактирования и удаления.Проблема в том, что политика JS того же происхождения затрудняет взаимодействие Ajax с моим API.Существует обходной путь jQuery для GET (через JSONP).

Предложения?

Ответы [ 4 ]

5 голосов
/ 26 мая 2011

Одним словом: НЕТ

GET всегда должен использоваться только для получения информации и никогда не должен иметь побочных эффектов.

Это лучшая практика практически для всех веб-интерфейсов API, которая имеет отношение как к цели глагола, так и к тому, как существующее программное обеспечение ожидает от себя поведения.

1 голос
/ 26 мая 2011

Добавьте еще один слой для обработки вашего кода и взаимодействия с вашей базой данных (другой домен).

Вы по-прежнему используете POST и можете сделать запрос к вашей базе данных на стороне сервера, используя любой язык, с которым вы работаете, например, php будет использовать curl. (Чтобы сделать запрос к другому домену)

Если вы разрешите взаимодействовать с вашей базой данных, используя get, тогда любой может просто набрать URL с нужными ему командами, так что да, избегайте этого.

1 голос
/ 26 мая 2011

Если вы пытаетесь обойти ту же политику происхождения, GET через JSONP является единственным возможным интерфейсным решением.Если у вас есть контроль над серверной частью, вы можете настроить прокси-службу, которая находится в том же домене, что и страница, но переходит на службу API и обратно.

Если вы собираетесь перейти внизJSONP GET path, убедитесь, что вы читали о XSS и CSRF.

0 голосов
/ 26 мая 2011

Как уже отмечали другие, GET не следует использовать для действий с побочными эффектами, такими как вставка, обновление и удаление.

Чтобы разрешить использование API из разных источников, посмотрите Обмен ресурсами между источниками , хотя в настоящее время поддерживается только частично браузерами .

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