SORU
13 Ocak 2011, PERŞEMBE


Ne kadar Dinlendirici bir API oluşturmak için?

Sorun şu: PHP bir sunucu üzerinde çalışan bir web uygulaması var. DİNLENMEK için apı inşa etmek istiyorum.
Biraz araştırma yaptım ve farkettim ki REST apı kullanır HTTP metodları (GET, POST...) için belirli bir URI ile bir kimlik doğrulama anahtarı (değil) ve bilgi sunulan bir HTTP yanıtı ile bilgi olarak XML veya JSON (tercih ederim JSON).

Benim sorum:

  1. Nasıl, app geliştirici olarak, bu URİ inşa miyim? Bu URI PHP bir kod yazmak gerekiyor mu?
  2. Nasıl bir karşılık olarak geri dönmek için JSON nesneleri inşa miyim?

CEVAP
18 Ocak 2011, Salı


Burada basit bir php çok basit bir örnek.

2 dosya varclient.php&api.php. Aynı url üzerinde her iki dosya koydum: kendi url bağlantısını değiştirmek zorunda kalacak, böylece http://localhost:8888/,. (dosya iki farklı sunucularda olabilir).

Bu sadece bir örnek, çok hızlı ve kirli, php yapmayalı uzun zaman oldu artı. Ama bu bir apı fikri.

client.php

<?php

/*** this is the client ***/


if (isset($_GET["action"]) && isset($_GET["id"]) && $_GET["action"] == "get_user") // if the get parameter action is get_user and if the id is set, call the api to get the user information
{
  $user_info = file_get_contents('http://localhost:8888/api.php?action=get_user&id=' . $_GET["id"]);
  $user_info = json_decode($user_info, true);

  // THAT IS VERY QUICK AND DIRTY !!!!!
  ?>
    <table>
      <tr>
        <td>Name: </td><td> <?php echo $user_info["last_name"] ?></td>
      </tr>
      <tr>
        <td>First Name: </td><td> <?php echo $user_info["first_name"] ?></td>
      </tr>
      <tr>
        <td>Age: </td><td> <?php echo $user_info["age"] ?></td>
      </tr>
    </table>
    <a href="http://localhost:8888/client.php?action=get_userlist" alt="user list">Return to the user list</a>
  <?php
}
else // else take the user list
{
  $user_list = file_get_contents('http://localhost:8888/api.php?action=get_user_list');
  $user_list = json_decode($user_list, true);
  // THAT IS VERY QUICK AND DIRTY !!!!!
  ?>
    <ul>
    <?php foreach ($user_list as $user): ?>
      <li>
        <a href=<?php echo "http://localhost:8888/client.php?action=get_user&id=" . $user["id"]  ?> alt=<?php echo "user_" . $user_["id"] ?>><?php echo $user["name"] ?></a>
    </li>
    <?php endforeach; ?>
    </ul>
  <?php
}

?>

api.php

<?php

// This is the API to possibility show the user list, and show a specific user by action.

function get_user_by_id($id)
{
  $user_info = array();

  // make a call in db.
  switch ($id){
    case 1:
      $user_info = array("first_name" => "Marc", "last_name" => "Simon", "age" => 21); // let's say first_name, last_name, age
      break;
    case 2:
      $user_info = array("first_name" => "Frederic", "last_name" => "Zannetie", "age" => 24);
      break;
    case 3:
      $user_info = array("first_name" => "Laure", "last_name" => "Carbonnel", "age" => 45);
      break;
  }

  return $user_info;
}

function get_user_list()
{
  $user_list = array(array("id" => 1, "name" => "Simon"), array("id" => 2, "name" => "Zannetie"), array("id" => 3, "name" => "Carbonnel")); // call in db, here I make a list of 3 users.

  return $user_list;
}

$possible_url = array("get_user_list", "get_user");

$value = "An error has occurred";

if (isset($_GET["action"]) && in_array($_GET["action"], $possible_url))
{
  switch ($_GET["action"])
    {
      case "get_user_list":
        $value = get_user_list();
        break;
      case "get_user":
        if (isset($_GET["id"]))
          $value = get_user_by_id($_GET["id"]);
        else
          $value = "Missing argument";
        break;
    }
}

exit(json_encode($value));

?>

Bu örnekte veritabanı için herhangi bir arama yapmak istemedim, ama normalde bunu yapman gerekir. Ayrıca değiştirmeniz gerekir "" işlev"". curl file_get_contents

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • echifitness

    echifitness

    9 Kasım 2008
  • Kayla Caton - Peet

    Kayla Caton

    23 HAZİRAN 2012
  • Sorikan

    Sorikan

    3 ŞUBAT 2008