Доброго времени суток, возник вопрос как можно реализовать API доступ который будет писать, обновлять базу? Интересует сам принцип работы. Нельзя же просто иметь ссылку на запись в базу..
Что-то вроде
/api/users/?action=getAllUsers // Получаем всех пользователей GET Запросом..
/api/users/?action=create
/api/users/?action=update&user_id=534
/api/users/?action=delite&user_id=957
Данные отправлять буду POST запросом AJAX// Но, тут вопрос стоит, об удалённом доступе? Ведь нельзя удалённо отправлять POST данные на сервер..
А так же как обеспечить безопасность, что не какой любопытный не смог воспользоваться API? Нужна проверка какая-то.. Про ключу что ли.. Что-то вроде..
/api/users/?action=getAllUsers&key=H35lgjs359gdsjl^648sfh523fa9sgwdlgs
Но, ведь смысла в этом нет передавать ключ в открытом виде..
Максим Студитских: Так в чем ваша проблема? Берете просто и делаете запрос. Если ваш сервер использует протокол https, то данные будут автоматом передаваться в зашифрованном виде на уровне протокола.. Ключ же нужен для того, чтобы сделать идинтификацию пользователя, таким образом можно будет контролировать его доступ к апи. Вам же дали подробнейшую статью по этой теме, вам трудно прочитать ее? Там все отлично и понятно расписано!
Максим Студитских: ajax не отправляет запросы на удаленные сервера и посему идентификация запроса упрощается, даже ключ доступа к API не нужен, только идентификация пользователя а именно токен.
Вопрос следующий. Для кого предназначено API? Если это OPEN API, то тут надо решать вопрос распределения доступа для разработчиков и идентификация оных. Если это RESTful API для своих проектов без возможности использования его другими разработчиками, то реализация уже другая.
Не использовать https - плохая практика в создании приложений тем более во времена активного продвижения протокола всеми кому не лень и тем более, когда сертификат можно получить бесплатно.
Руслан: ajax не отправляет запросы на удаленные сервера? Что простите??? Очень интересненько.. А по теме - www.michurin.net/computer-science/rsa.html - вот это читайте. Как выход - вы можете при каждом запросе к серверу генерировать открытый и закрытый ключи, отправлять данные на сервер, а вместе с ними открытый ключ, которым сервер и будет шифровать отдаваемые им данные. Сервер же в свою очередь будет давать вам открытый ключ, с помощью которого вы будете шифровать данные, летящие на сервер. Таким образом на каждой стороне должен быть свой закрытый ключ. Но клиенту кстати открытый ключ можно передать всего 1 раз, а вот серверу необходимо отдавать ему на каждом запросе, так как в куках закрытый ключ вы хранить не сможете, надо будет его генерировать постоянно. Ну вот как одно из решений..
А вообще ставьте на сервер https и не парьтесь, это будет лучшим решением без костылей!
darksladen: Политика безопасности браузера не позволит отправить стандартный ajax запрос, как кросс-доменный. Можно воспользоваться кросс-доменным ajax, но в таком случае на сервере, который его примет, должен быть прописан заголовок для кросс-доменных запросов, разрешающих их прием. Подробнее можно почитать тут XMLHttpRequest: кросс-доменные запросы