powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Rest, json, js, php
10 сообщений из 10, страница 1 из 1
Rest, json, js, php
    #39230799
tors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочел вот это:
http://www.ibm.com/developerworks/library/ws-restful/
Но чет не все понял

Как, например, сформировать и отправить запрос из web-приложения:
GET /adduser?name=Robert HTTP/1.1

XMLHTTPRequest?

Нужен учебник, как работать с REST.
С привязкой к php и json

Да и не только как юзать чужие REST API, но и создавать свои.
Без привязки к фреймворкам.
Чистый PHP

Клиент на js.
Сервер который реализовывает и обрабатывает Rest API на PHP.
Обмен на JSON.
(наверное нужно написать web - сервис, не знаю пока).
Должна же быть умная книжка или глава в книжке по теме?
Или подробное руководство в нете?
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231176
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tors...
Должна же быть умная книжка или глава в книжке по теме?
Или подробное руководство в нете?Навалом везде,
клиент-серверные запросы довольно просты в использовании.

Создайте 1 php-скрипт, который будет выдавать 1 HTML-страницу,
на которой будет JavaScript - код, выполняющий запрос на этот php-скрипт и получающий ответ,
php-скрипт наоборот - получает запрос и выдаёт ответ, если захочет ))
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231178
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tors,

P.S.
Сразу начинайте использовать POST-запросы - они не кешируются и позволяют передавать с клиента много данных.
Советую использовать GET- запросы только для ссылок (для навигации).
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231216
tors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Навалом везде
Например, чтоб от и до :)
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231224
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
torsНавалом везде
Например, чтоб от и до :)
Если Вы хотите действительно разобраться сами и сделать это без фреймворков и библиотек, я могу Вам помочь,

но постепенно, по мере желания и времени, сейчас к тому-же праздники, могу и пропасть на несколько дней :)

В принципе, можно рассмотреть 3 варианта отправки POST-запроса с HTML-страницы с помощью JavaScript:

1. с помощью обычной HTML-формы с кнопкой submit
2. с помощью new FormData() с нуля или на основе существующей HTML-формы
3. с "ручным" формированием строки - тела POST-запроса из JavaScript

При этом ещё можно сделать получение ответа в 2-х вариантах:
1. с помощью .onreadystatechange
2. по таймеру через setInterval()

Со стороны PHP тоже можно показать простой работающий элементарный код.

Более того - уже из этого примера можно пойти дальше - upload файлов чере перетаскивание их мышью в тот или иной HTML-блок страницы,
определение и обработка картинки со стороны PHP с переводом в формат PNG, JPG, GIF (по желанию) и т.д.
...


--------- Первое, что нужно сделать на клиенте, это создать объект XMLHttpRequest

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
// кросс-браузерная функция создания объекта XMLHttpRequest
function myCreateXmlHttp() {
  var i, v, x = false, a='MSXML2.', b='XMLHTTP';
  try	{
    x = new XMLHttpRequest();
  } catch (e) { // здесь код для старых IE
	v = new Array(a+b+'.6.0', a+b+'.5.0', a+b+'.4.0', a+b+'.3.0', a+b, 'Microsoft.'+b);
	a = v.length;
	for (i=0; i<a && !x; i+=1) { try { x = new ActiveXObject(v[i]); } catch (e) {} }
  } return x;
}

var myXHR=myCreateXmlHttp(); // пример создания нового объекта



-------- Второе, нужно отправить запрос на сервер и принять ответ.

Вот самый простой и лёгкий вариант (не проверял, я ещё спать не ложился, времени нет, но должно работать):

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
function myFormSend(name, value) {
  var fd = new FormData();
  fd.append(name, value);
  myXHR.open('POST', 'mydomain.ru/myscript.php',true);
  // myXHR.setRequestHeader("Content-Type", "application/octet-stream"); - как правило не нужно использовать (есть нюансы)
  // myXHR.setRequestHeader("Content-Type", "multipart/form-data"); - как правило не нужно использовать (есть нюансы)
  myXHR.onreadystatechange = myReadyXHR;
  myXHR.send(fd);
}

function myReadyXHR() { // Получение ответа
var ret, status;
try {
  if (myXHR.readyState==4){
    status = myXHR.status;
    if (status==200) {
      ret = myXHR.responseText;
      alert(ret); // ответ сервера (то, что выведет PHP-скрипт "mydomain.ru/myscript.php")
    } else alert('error code: '+status);
  }
} catch(e) {
  alert('error');
}
}

myFormSend('id','myvalue1'); // отправка запроса



Теперь PHP-код на сервере (этот скрипт отправляет обратно полученное содержимое под именем "id"):

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php
// myscript.php
if (!$_POST['id']) {
  header("HTTP/1.1 204 No Content"); exit;
}
$ret = $_POST['id'];
$ret = get_magic_quotes_gpc() ? stripslashes($ret) : $ret;
print $ret;
?>



Думаю HTML-код страницы с кнопкой и прочие мелочи сами сделаете.

Сегодня вечером-ночью или завтра можно продолжить (если я тут буду)...
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231230
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
torsНавалом везде
Например, чтоб от и до :)да, ещё, очень сильно рекомендую разобраться, из чего состоят HTTP-запросы "изнутри",
вот например на этой странице нормально расписано. Особенно советую разобраться с multipart/form-data

POST-запрос по сути - это обычный текст с уникальными разделителями, между этими разделителями вставляются передаваемые данные (в том числе бинарные),
перед данными находятся заголовки, в том числе заголовок Content-Length с размеров в байтах последующих данных.
Ничего сложного нет вообще, особенно если попрактиковаться и наработать навыки.
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231233
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tors,

учитывая Ваш пост 19143254
tors... Клиенты могут быть на чем угодно ...информация по ссылке выше (формирование тела HTTP-запроса) Вам необходима, и с этого надо начинать.

Со стороны PHP всё равно, кто послал ему запрос (браузер, сервер, десктопное приложение),
но в браузерах дополнительно действуют политики безопасности (потому что они исполняют произвольный JavaScript).
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231243
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, я вот в поисковик вбил запросы:

php rest api
php rest client
php rest tutorial
php rest server

Куча информации доступно изложенной.
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231356
...
Рейтинг: 0 / 0
Rest, json, js, php
    #39231443
Фотография бухалтер фантоцци
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне как новичку, помогло это PHP. Уроки AJAX. Практика POST запросов там не используется multipart/form-data , но для начала пойдёт, для простых запросов и разных тестов.

А ещё лучше универсальная функция, где можно указывать тип запроса,
например для multipart/form-data не нужно использовать encodeURIComponent(),
а передавать параметры "как есть", в том числе содержимое небольших файлов.

Вот свою упростил (но результат не проверял), у меня оригинал работает в разных браузерах (поддерживаю старые IE8 и Opera12).
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
/*
  url - имя серверного скрипта
  mode - "mfd" если multipart/form-data, иначе application/x-www-form-urlencoded
  arrData - массив вида ["Имя1", "Значение1", "Имя2", "Значение2", "Имя3", "Значение3", ...]
  xhr - объект XMLHttpRequest
  cb - callback-функция для onreadystatechange
*/
function myPostHttp(url, mode, arrData, xhr, cb) {
  var i, p = '',
    rn = '"\r\n\r\n',
    b = Math.round(Math.random()*9000000).toString(),
    s = '--' + b + '\r\n' + 'Content-Disposition: form-data; name="';
  if (url && xhr && arrData && Object.prototype.toString.call(arrData)==='[object Array]' && arrData.length>1) {
    try {
      xhr.open('POST',url,true);
      if (mode == 'mfd') {
        xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+b);
        for (i=0; i<arrData.length; i+=2) { p += s + arrData[i] + rn + arrData[i+1] + '\r\n'; }
        p += '--' + b + '--\r\n';
        p = 'Content-Length: ' + p.length + '\r\n\r\n' + p;
      } else {
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        for (i=0; i<arrData.length; i+=2) { p += (i>0?'&':'') + arrData[i] + '=' + encodeURIComponent( arrData[i+1] ); }
      }
      if (typeof(cb)=='function') xhr.onreadystatechange = cb;
      xhr.send(p);
      return true;
    } catch (e) { return false; }
  } else return false;
}



Недостаток такой "ручной" сборки строки в том, что вложенные файлы придётся преобразовывать из бинарного вида в корректный строковый формат (например, в base64).

Код: javascript
1.
2.
3.
var myReader = new FileReader();
myReader.readAsDataURL(obj.files[0]);
myReader.onloadend = function() { myStringBase64 = myReader.result; /*... и т.д. и т.п. */}



======================================================
Поэтому, думаю, лучшим вариантом будет использование new FormData() - туда можно легко добавлять файлы (например через Drag-Drop ( event.dataTransfer ) ),
но это не работает в IE<10 и многих мобильных браузерах.

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
var myXHR = myCreateXmlHttp();
var fd = new FormData();
fd.append('name1', 'value1');
fd.append('name2', 'value2');
fd.append('myfile', obj.files[0], obj.files[0].name);
myXHR.open('POST', '/myscript.php',true);
myXHR.onreadystatechange = myCallbackFunction;
myXHR.send(fd);



Ну а со стороны PHP как обычно через $_POST['name1'], $_FILES['myfile']['type'], $_FILES['myfile']['tmp_name'] и т.д.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Rest, json, js, php
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]