我一直在寻找关于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;
}
所以我对此有几个问题:
他们发送的文件说
“为了进行请求调用,出于安全原因,需要使用内容类型”application / x-www-form-urlencoded“创建JSON对象并将其作为POST表单参数obj = {jsonObject}传递。”
我知道登录函数包含USPS的REST API需要的正确输入值,但我不确定如何将它们作为“obj”传递,或者如何应用“content-type”。
我的PHP脚本顶部定义了一个“常量”,如下所示:
const EPF_BASE_URL ='https://epfws.usps.gov/ws/resources';
我注意到在实际的功能中,这部分链接被遗漏了,他们只是引用了'/ epf / login',如上所示。由于“$ this”包含许多不同的值,我想知道如何根据需要找到EPF_BASE_URL。它与“使用”指令在C#中的工作方式类似吗?
调用此函数并显示结果的最简单方法是什么?这是我最大的问题。我会使用带有HTML表单的单独PHP类吗?我理解应该做什么的概念,但我完全失去了为它设置开发环境。
我一直在和MAMP一起尝试这一切,但我很想知道我是否走在正确的轨道上。
答案 0 :(得分:2)
如果您已经获得了一个应该支持API的PHP类(希望来自USPS),那么它应该已经将数据放在表单内容中,并确保它是以适当的内容提交的 - 类型。
PHP const
更像是C#static string
。库很可能会使用常量来创建结束URL(即EPF_BASE_URL . $resource
)。如果您需要在沙盒环境中运行,则可以更改该常量,而无需更改所有其他代码。
这是一个非常大的问题,因为它取决于您对应用程序的编程方式。程序,MVC,现有框架等
至少,您可以在实例化对象上设置loginUser
和loginPass
,然后调用login
方法。然后,您可以检查结果,假设结果是JSON对象,或使用您喜欢的调试方法查看内容。
我猜是USPS API类名。
$uspsApi = new UspsApi();
$uspsApi->loginUser = 'username';
$uspsApi->loginPass = 'password';
$result = $uspsApi->login();
echo print_r($result, true);