使用JSON和PHP将数据发布到REST API

时间:2015-11-09 23:40:09

标签: php json api rest post

我一直在寻找关于REST API的类似主题,但我在项目中仍然存在一些困惑,主要是PHP方面的问题。

USPS提供了一个REST API,其功能可通过以下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. 他们发送的文件说

    “为了进行请求调用,出于安全原因,需要使用内容类型”application / x-www-form-urlencoded“创建JSON对象并将其作为POST表单参数obj = {jsonObject}传递。”

    我知道登录函数包含USPS的REST API需要的正确输入值,但我不确定如何将它们作为“obj”传递,或者如何应用“content-type”。

  2. 我的PHP脚本顶部定义了一个“常量”,如下所示:

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

    我注意到在实际的功能中,这部分链接被遗漏了,他们只是引用了'/ epf / login',如上所示。由于“$ this”包含许多不同的值,我想知道如何根据需要找到EPF_BASE_URL。它与“使用”指令在C#中的工作方式类似吗?

  3. 调用此函数并显示结果的最简单方法是什么?这是我最大的问题。我会使用带有HTML表单的单独PHP类吗?我理解应该做什么的概念,但我完全失去了为它设置开发环境。

  4. 我一直在和MAMP一起尝试这一切,但我很想知道我是否走在正确的轨道上。

1 个答案:

答案 0 :(得分:2)

  1. 这真的取决于他们的API。希望你得到一个可以解码为JSON对象(http://au.php.net/manual/en/function.json-decode.php)的字符串。某些API可能会提供一个简单的字符串,表示“成功”或“失败”。你有代码,所以看看$ this-> pullResponse()给你的。
  2. 如果您已经获得了一个应该支持API的PHP类(希望来自USPS),那么它应该已经将数据放在表单内容中,并确保它是以适当的内容提交的 - 类型。

    1. PHP const更像是C#static string。库很可能会使用常量来创建结束URL(即EPF_BASE_URL . $resource)。如果您需要在沙盒环境中运行,则可以更改该常量,而无需更改所有其他代码。

    2. 这是一个非常大的问题,因为它取决于您对应用程序的编程方式。程序,MVC,现有框架等

    3. 至少,您可以在实例化对象上设置loginUserloginPass,然后调用login方法。然后,您可以检查结果,假设结果是JSON对象,或使用您喜欢的调试方法查看内容。

      我猜是USPS API类名。

      $uspsApi = new UspsApi();
      $uspsApi->loginUser = 'username';
      $uspsApi->loginPass = 'password';
      $result = $uspsApi->login();
      echo print_r($result, true);