LoginSignup
4
3

More than 3 years have passed since last update.

大学では教えてくれなかったAPIの話:WebAPIの使い方・作り方

Last updated at Posted at 2019-09-24

いきさつ

Web系やスマホアプリにおいて,サーバサイドならAPIを作成,フロントならAPIを呼び出す操作が必要になるかと思います.
しかし,大学の授業等でAPIに関する解説がなく,自分で調べることになりました.
後輩が同じような苦労をせずに済むように記事にまとめます.

用語説明

詳細については,もっと詳しくわかりやすい記事がたくさんありますので調べましょう.

API とは

APIとは、あるコンピュータプログラム(ソフトウェア)の機能や管理するデータなどを、外部の他のプログラムから呼び出して利用するための手順やデータ形式などを定めた規約のこと。

出典:APIとは - IT用語辞典 e-Words

実際には,他のプログラムを呼び出すための呼び出し口(=境界面)を指してAPIという言葉が用いられる場合が多いように感じます.
(例:××のAPIを呼ぶ,など)

また,APIにもいろいろあるでしょう.
外部のプログラムを呼び出すと言っても,

  1. 何を呼び出すのか(ライブラリ,外部サーバ上のアプリケーション,etc)
  2. どのようなルール(プロトコル)で呼び出すのか

などの点で様々な種類があります.

例えば,Python向けの機械学習ライブラリscikit-learnを呼びだすAPIや,
API Reference — scikit-learn 0.21.3 documentation

Twitterに投稿されたデータにアクセスするためのAPI,
TwitterのAPIについて - Twitter Help Center

Qiita上のデータを参照するためのAPIだって存在します.
Qiita API v2ドキュメント - Qiita:Developer

WebAPI とは

APIのうち,サーバ上のデータやプログラムを,HTTP(今時はHTTPS)プロトコルを用いて呼び出すものを指します.
(このプロトコルは,Webサーバとやりとりするためのプロトコルですね)
返るデータは,JSON形式である場合が多いように思います.

WebAPIの使い方・作り方

話を簡単にするため,ここではWebAPIに対象を絞って用い方を記します.

使い方(呼び出し方)

例として,Qiita APIのうち認証なしで利用できるものを使います.
例えばユーザデータを取得する場合,上記のドキュメントには,ホストqiita.comGET /api/v2/users/:user_idせよとあります.:user_idの部分はQiitaのIDで置き換えます.
具体的には,私のユーザデータを取得する場合,次のようにします.

  • curlコマンド
$ curl -L qiita.com/api/v2/users/ryhoh
{"description":"学部4年生.求職中.\r\n何でも屋さん.表向き,専門は機械学習ってことになってる.","facebook_id":"","followees_count":1,"followers_count":5,"github_login_name":"ryhoh","id":"ryhoh","items_count":6,"linkedin_id":"","location":"","name":"","organization":"関西大学 総合情報学部 総合情報学科","permanent_id":286106,"profile_image_url":"https://avatars3.githubusercontent.com/u/16788328?v=4","team_only":false,"twitter_screen_name":null,"website_url":""}
  • JavaScript
<script>
fetch('https://qiita.com/api/v2/users/ryhoh')
  .then(function(response) {
    return response.json();
  })
  .then(function(myJson) {
    console.log(JSON.stringify(myJson));
  });
</script>

(JavaScriptはほとんどわからないので Fetch を使う - Web API | MDN を参考に作成)

正直,確認するだけならブラウザで開いでも見える(HTTPSだし).

また,データの送信を目的にPOSTメソッドを用いる場合もありますが,その場合も似たような形で行えるため省略します.

作り方

アクセスされたらcontentsとしてHello world!を返すだけのAPIです.

  • PHP
index.php
<?php

header('Content-Type: text/html; charset=UTF-8');

$res = [
    'contents' => 'Hello world!',
];

print json_encode($res, JSON_PRETTY_PRINT);

ターミナルでphp -S IPアドレス:ポート番号として実行し,そこにブラウザでアクセスするか,上記の方法で呼び出してあげれば,返ってきたデータを見ることができるかと思います.

4
3
0

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
4
3