簡體   English   中英

使用JSON和PHP將數據發布到REST API

[英]Posting Data to REST API using JSON and PHP

我一直在尋找關於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. 調用此函數並顯示結果的最簡單方法是什么? 這是我最大的問題。 我是否將單獨的PHP類與HTML表單一起使用? 我了解應該做什么的概念,但是我完全沒有為它建立開發環境。

我一直在嘗試使用MAMP進行所有操作,但是很想知道我是否走在正確的軌道上。

  1. 那真的取決於他們的API。 希望您能返回一個可以解碼為JSON對象的字符串( http://au.php.net/manual/en/function.json-decode.php )。 某些API可能會給出一個簡單的字符串,表示“ SUCCESS”或“ FAIL”。 您已經有了代碼,因此看看$ this-> pullResponse()給您帶來什么。

如果已經為您提供了一個應該支持該API的PHP類(希望從USPS獲得),那么它應該已經將數據放入表單內容中並確保以適當的內容類型提交了。

  1. PHP const更像是C# static string 庫很可能會使用該常量創建結束URL(即EPF_BASE_URL . $resource )。 如果您需要在沙盒環境中運行,則可以更改該常量,而不必更改所有其他代碼。

  2. 這是一個很大的問題,因為這取決於您對應用程序進行編程的方式。 程序,MVC,現有框架等

至少,您將在實例化的對象上設置loginUserloginPass ,然后調用login `。 然后,您可以檢查結果(假設結果是JSON對象),或者使用喜歡的調試方法查看內容。

我猜想是USPS API類名。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM