Для этого вы получите довольно субъективную группу ответов. Есть несколько способов сделать то, что вы, похоже, ищете.
Во-первых, это отдельный контроллер «API» с контроллером CodeIgniter-restserver, который дублирует все функции вашего контроллера. Это было бы неоптимальным, так как вам нужно будет поддерживать код своего сайта в двух местах.
Другой, немного лучший вариант - проверить на $this->input->is_ajax_request()
или что-то подобное, отправленное мобильным приложением, а затем отправить ответы обратно с сервера restserver, но обычный view()
для веб-сайта.
В конечном счете, и ваш лучший вариант - это реорганизовать весь ваш код, создавая единую конечную точку API-интерфейса кода (здесь вам нужно будет решить, является ли CI разумным API или если вы хотите использовать что-то еще) и ваш сайт и мобильные приложения используют его.
Редактировать
Я просто понял, что вы конкретно упоминается ионно-аутентификации, и я, случается, есть модуль пользователей PyroCMS под открытым.
if ($this->input->is_ajax_request())
{
$user = $this->ion_auth->get_user_by_email($user->email);
$user->password = '';
$user->salt = '';
exit(json_encode(array('status' => true, 'message' => lang('user:logged_in'), 'data' => $user)));
}
так, для restserver вы могли бы вместо того, чтобы отправить обратно:
$this->response(array('status' => true, 'message' => lang('user:logged_in'), 'data' => $user)), 200);
Edit 2 Что касается как отправлять почтовые данные с помощью Ajax, это действительно совершенно другой вопрос, от OP, но быстрый пример использования JQuery:
// Not complete code
<script>
// Attach a submit handler to the form
$("#searchForm").submit(function(event) {
// Stop form from submitting normally
event.preventDefault();
// Get some values from elements on the page:
var $form = $(this),
term = $form.find("input[name='s']").val(),
url = $form.attr("action");
// Send the data using post
var posting = $.post(url, { s: term });
// Put the results in a div
posting.done(function(data) {
var content = $(data).find("#content");
$("#result").empty().append(content);
});
});
</script>
Пример из https://api.jquery.com/jquery.post/
хорошо, но как я могу узнать, как направить запрос ajax на сервер из моего приложения? Кроме того, как я могу узнать, как должен выглядеть метод POST? – Medardas
Codeigniter говорит 'is_ajax_request()' "Проверяет, установлен ли заголовок сервера HTTP_X_REQUESTED_WITH, и возвращает логический TRUE, если он есть, или FALSE, если нет." $ _Почтовые данные (отправленные ajax) получают то же самое с CI для Ajax или «регулярного» представления формы, используя '$ this-> input-> post()' На любопытном обмане способ сделать это тоже искать что-то задано в данных post, например: 'if ($ this-> input-> post ('from_mobile') == 1) {...}' и не беспокоиться о заголовках HTTP ... Хорошее место для чтения в классе ввода: https://www.codeigniter.com/user_guide/libraries/input.html –
см. Редактировать 2 для отправки запросов ajax. –