Отправка данных в REST API с использованием JSON и PHP

1

Я просматривал похожие темы в REST API, но у меня все еще есть некоторая путаница в моем проекте, в основном с PHP-частью вещей.

USPS предоставляет API REST с функциями, которые можно вызывать через URL-адрес следующим образом: https://epfws.usps.gov/ws/resources/epf/login

Чтобы успешно выполнить любой вызов, мне сказали, что объект JSON должен быть создан и передан как "параметр POST" с ожидаемыми значениями.

Это объект JSON, который необходимо передать в этом случае:

obj=
{
"login":"loginExample",
"pword":"passwordExample"
}

Мне также был предоставлен класс PHP, который должен управлять этими вызовами. Это функция входа:

public function login ()
{
    // Set up the parameters for a login attempt
    $jsonData = array(
        'login' => $this->loginUser,
        'pword' => $this->loginPass,
    );

    // Make a login request
    $jsonResponse = $this->pullResource
('/epf/login', 'POST', $jsonData);


    return $jsonResponse;
}

Поэтому у меня есть несколько вопросов относительно этого:

  1. Документ, который они отправили,

    "Чтобы сделать запросы, объект JSON должен быть создан и передан как параметр POST-формы obj = {jsonObject} по соображениям безопасности, используя контент-тип" application/x-www-form-urlencoded "".

    Я знаю, что функция входа в систему содержит правильные входные значения, которые требуется API REST API USPS, но я не уверен, как передать их как "obj" или как применить "тип контента".

  2. У меня есть "константа", определенная в верхней части моего PHP-скрипта, которая выглядит так:

    const EPF_BASE_URL = ' https://epfws.usps.gov/ws/resources ';

    И я заметил в реальных функциях, что эта часть ссылки оставлена без внимания, и они просто ссылаются на "/epf/login", как вы можете видеть выше. Поскольку "$ this" содержит множество разных значений, мне интересно, как он, по-видимому, находит EPF_BASE_URL по мере необходимости. Это похоже на то, как "использование" директив работает на С#?

  3. Каков самый простой способ вызвать эту функцию и отобразить результат? Это мой самый большой вопрос. Я бы использовал отдельный PHP-класс с HTML-формой? Я понимаю концепцию того, что он должен делать, но я полностью потерял настройку среды разработки для нее.

Я пробовал все это с помощью MAMP, но мне было бы интересно узнать, нахожусь ли я на правильном пути или нет.

Теги:
rest
post

1 ответ

2
Лучший ответ
  1. Это действительно зависит от их API. Надеемся, вы получите строку назад, которая может быть расшифрована для объекта JSON (http://au.php.net/manual/en/function.json-decode.php). Некоторые API могут дать простую строку, которая говорит "УСПЕХ" или "НЕИСПРАВНОСТЬ". У вас есть код, поэтому взгляните на то, что дает $this-> pullResponse().

Если вам предоставлен класс PHP, который должен поддерживать API (надеюсь, из USPS), тогда он должен уже позаботиться о том, чтобы данные были помещены в содержимое формы, и обеспечение его представлением с соответствующим типом контента.

  1. PHP- const больше похожа на static string С#. Очень вероятно, что библиотека будет использовать константу для создания конечного URL (т. EPF_BASE_URL. $resource). Если вам нужно было работать против среды с песочницей, вы можете изменить эту константу, не изменяя весь другой код.

  2. Это очень большой вопрос, потому что это зависит от того, как вы программируете свое приложение. Процедурные, MVC, существующие структуры и т.д.

По крайней мере, вы должны установить loginUser и loginPass на экземпляр объекта и вызвать метод login в login. Затем вы можете проверить результаты, предполагая, что результатом является объект JSON, или использовать ваш любимый метод отладки для просмотра содержимого.

У меня есть предположение как имя класса USPS API.

$uspsApi = new UspsApi();
$uspsApi->loginUser = 'username';
$uspsApi->loginPass = 'password';
$result = $uspsApi->login();
echo print_r($result, true);
  • 0
    Рувим, спасибо за ответ, это очень помогло. Так считается ли указанный выше массив PHP («$ jsonData») объектом JSON при вызове или мне нужно использовать «json_encode ($ jsonData)»?
  • 0
    В приведенном вами примере кода $ jsonData - это массив PHP. Однако я не уверен, pullResource() ли pullResource() объект JSON или нет, потому что у меня нет доступа к API. Я нашел ссылку на источник ( github.com/cpapdotcom/USPSTools ). pullResource() по использованию pullResource() в других методах в EPF.php, вы можете оставить его как массив PHP, а pullResource() преобразует его в объект JSON.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню