11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【PHP】とりあえずAPIのスタブをパパっと作る

Last updated at Posted at 2018-02-08

とりあえずAPIのスタブつくろう

APIとのやり取りを実装するのに仮のAPIをパパっと作って、ささっと自分の実装する箇所をある程度作ろう
というのが事の始まりです

スタブAPI

このPHPファイルを仮サーバーにおいてこいつと通信する。
例ではPOSTパラメータはnameを受け取って、その値に対して'_RECEIVED'を付加して、時間とともにjsonにして返す
てな感じの処理をしてます。
また、受け取ったlogも出力するようにしてます。

api.php
<?php
/* スタブAPIが受け付けるPOSTパラメーター:name */

// header('Access-Control-Allow-Origin: *'); // どこからでもアクセス許可するならワイルドカード
header('Access-Control-Allow-Origin: https://*******/post.php');
header('Access-Control-Allow-Credentials: true'); // Basic認証やCookieのやり取りする際は必要(ワイルドカード使用すると使えない)
header('Access-Control-Allow-Headers: Content-Type');
header('Content-Type: application/json; charset=utf-8');

date_default_timezone_set('Asia/Tokyo');

if(isset($_POST['name']) === false || $_POST['name'] === '') {
    $_POST['name'] = 'TEST_API';
}

$postName = htmlspecialchars($_POST['name'], ENT_QUOTES);

$array = [
    'name' => $postName . '_RECEIVED', // API側で受け取ったよというマーク的なやつを付加
    'date' => date("Y-m-d H:i:s"),
];

$json = json_encode($array);

/* logをAPI側のサーバーに出力する */
$file = new SplFileObject('log.txt', 'a');
$file->fwrite(
    "【→API】RequestParameter:" . $postName . "'\n【←API】ReturnParameter :" . $json . "\n----------\n"
);

echo $json;
exit;

単純にapi.phpにアクセスすると↓こんな感じで表示されるはず。
{"name":"TEST_API_RECEIVED","date":"2018-02-08 13:47:14"}

もし、呼び出し元でnameをPOSTすると
{"name":"YOBIDASHI_RECEIVED","date":"2018-02-08 13:48:45"}
みたいな感じでnameのとこが**【POSTした値+_RECEIVED】**に変わってるはず

おわり

  • headerの設定箇所が不安なので指摘あれば教えてくださいです
  • あとスタブって使い方あってます?

参考

11
13
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?