Задать вопрос
Ответы пользователя по тегу RESTful API
  • Принципиальное отличие POST, PATCH и их реализация?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Классически:
    POST - создание нового ресурса. Передаются все обязательные поля и любые необязательные.
    PUT - полное обновление ресурса. Передаётся идентификатор ресурса, все обязательные поля и любые необязательные.
    PATH - модификация ресурса. Передаётся идентификатор ресурса и обновляемые поля.
    Ответ написан
    Комментировать
  • Как объединить списки, полученные от 2 REST API с параметрами `limit` и `offset`, и вернуть его, согласно параметрам `limit` и `offset`?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Разобраться в коде двух уже существующих методов и написать третий, работающий самостоятельно, без обращения к двум первым.
    Ответ написан
    2 комментария
  • Как лучше организовать управление сервером?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    "несколько запросов одновременно" - на каждое принятое основным потоком соединение делается форк задачи (или запускается поток с подзадачей) с передачей ему соединения. Такое умеют все web-серверы - Apache, Nginx, IIS.
    "асинхронность" - это из другой оперы. Под ней обычно подразумевают работу в событийной модели, когда каждое событие запускает связанные с ним обработчики (или кладёт их в очередь исполнения).
    При этом обе эти вещи перпендикулярны друг другу. В том же браузерном JS основной поток страницы один, но работает асинхронно по событиям. При этом у каждой страницы свой основной поток, то есть браузер в целом работает многопоточно.
    Ответ написан
    Комментировать
  • Как исправить json плагина REST для терминов таксономии?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Всё элементарно. В PHP любой массив - ассоциативный, что соответствует объекту JSON.
    Но, если индекс массива начинается с нуля и содержит только строго последовательные номера (0, 1, 2, 3 и т.д.), то для простоты он представляется как классический массив, в том числе и в JSON.
    print json_encode(['a', 'b']); // ["a","b"]
    print json_encode([0 => 'a', 1 => 'b']); // ["a","b"]
    print json_encode([1 => 'a', 2 => 'b']); // {"1":"a","2":"b"}
    У вас массив заполняется по индексам $term->tid, которые не образуют классической последовательности, поэтому и представляются объектом.
    Ваш код можно переписать так:
    $vid = 'digest';
    $termDataAll = array_map(
        fn($term) => [
            'tid' => $term->tid,
            'name' => $term->name,
            'weight' => $term->weight,
            'childs' => array_map(
                fn($child) => [
                    'tid' => $child->tid,
                    'name' => $child->name,
                    'weight' => $child->weight
                ],
                \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid, $term->tid, 1)
            )
        ],
        \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid, 0, 1)
    );

    В результате должен получиться такой JSON
    [
      [
        "tid": "11",
        "name": "parent-1",
        "weight": "7",
        "childs": [
          ["tid": "14", "name": "child-1", "weight": "0"],
          ["tid": "19", "name": "child-2", "weight": "1"],
        ],
      ], [
        "tid": "12",
        "name": "parent-2",
        "weight": "6",
        "childs": [
          ["tid": "17", "name": "child-1", "weight": "0"],
          ["tid": "18", "name": "child-2", "weight": "1"]
        ]
      ]
    ]
    Ответ написан
    1 комментарий
  • Как правильно настроить аутентификацию для rest api?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Это ваш сервис? Тогда что мешает добавить роут /login?
    Если не ваш, то стоит прочитать документацию и посмотреть, каким образом осуществляется аутентификация клиента.
    Ответ написан
  • Как происходит матчинг ответов HTTP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В HTTP всё просто, один запрос - одно соединение - один ответ. Ничего матчить не надо.
    Если используется HTTP-pipelining, то ответы должны возвращаться строго в той же последовательности, в которой отправлялись запросы.
    Ответ написан
    Комментировать
  • Как правильно получать/добавлять данные пользователя?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    В REST нет может быть методов getUser, callUser и т.д.
    Должен быть ресурс users и запросы к нему разными HTTP-методами.
    GET https://example.com/users - получает всех пользователей
    GET https://example.com/users/ivanov - получает пользователя с логином ivanov
    POST https://example.com/users/ivanov - добавляет пользователя с логином ivanov
    PUT https://example.com/users/ivanov - добавляет или изменяет пользователя с логином ivanov
    PATH https://example.com/users/ivanov - изменяет пользователя с логином ivanov
    DELETE https://example.com/users/ivanov - удаляет пользователя с логином ivanov
    Ответ написан
    2 комментария
  • Как раскодировать ответ rest?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    У меня с этого адреса ответ приходит с типом application/x-protobuf
    Это ProtoBuf, для его прочтения, по хорошему, надо иметь .proto-файл со структурой сообщения.
    P.S. Без .proto-файла тоже можно, но получите структуру без имён полей, только значения:
    // Первая запись в полученном сообщении:
    [
      1 => [
        1 => "\x3B\x31\xAB\x10\x63\x11\x11\xE6\x84\x9F\52\x54\x00\x10\xB6\x08"
        2 => "Продукты"
        4 => "https://yastatic.net/s3/edadeal-public-static/segments/svg/flat/seg_1.svg"
        5 => 1
        6 => 10
        8 => "food"
      ]
    ]
    Ответ написан
  • Как правильно генерировать токен?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
  • Как мне авторизоваться через c api php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    И правильно не работает.
    CURLOPT_CUSTOMREQUEST - здесь не нужна, используйте CURLOPT_POST.
    CURLOPT_HTTPHEADER - не обязательна, это значение задаётся по умолчанию для POST-запросов.
    CURLOPT_EMAIL - такой опции вообще не существует.
    CURLOPT_PASSWORD - опция относится к HTTP-авторизации и здесь совсем не нужна.
    Вместо этих двух нужна правильно установленная опция CURLOPT_POSTFIELDS.
    Ответ написан
  • Корректный вид URL для end point'a?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Если это RESTFUL, то
    Метод: PUT
    Путь: /events/:event_id
    Данные: title=Great+event&owner=Karl

    То, что у вас написано, больше похоже на фрагмент JSON-RPC.
    Ответ написан
    Комментировать
  • Как послать такой запрос через curl на php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    --user - это опция CURLOPT_USERPWD, а не элемент POST
    Ответ написан
    Комментировать