skillup

技術ブログ

PHP ドキュメント作成 プログラミング全般

APIに関して

投稿日:

RESTAPIのルーティングで気をつけることなんぞを。

直近のプロジェクトではRESTAPIを作ることが多かったんですが気をつけることなんぞを。

仕様書はソースから

web系のペースの早い現場とかだと、ドキュメントづくりが結構大変なんですよね。

ドキュメント作成について

上記のような問題点があるのですが、APIの場合は比較的ソースからドキュメントが起こしやすいのではないかと思います。

Laravelで作ったAPIのドキュメントを超簡単に生成する方法(Laravel API Documentation Generator)

私の場合、リクエストとレスポンスを伝えるのにテストコードを使っていました。

テストコードが仕様書になりますので、ソースの修正と同時に仕様書が出来上がります。(実際はそんなにうまく行きませんが手でドキュメントを作るよりかは差分が小さくなります。)

ツール

開発効率を上げるためにですが、APIを投げるツールについてよく調べておくこと

それほど調べたわけじゃないですが、やはりPostmanが使いやすかったです。

他curlコマンドを色々と応用したり、Guzzleなんかもツール化してみると使いやすいかと思います。

LaravelでのAPI実装

form以外でのPOST送信(というかHTTP通信全般)

curl コマンド 使い方メモ

命名

今回のメインはここです。

命名ルールが場当たり的になってしまい、統一性がなくなることがありましたので、ある程度一般的なルールを学習したいと思います。

基本的な原則

  • 言語の拡張子などを入れない
  • http://exmample.com/api/v1/ などバージョンを入れる
  • 名詞(できれば複数形)のみで構成するget,createなどを入れない(CRUDの分だけURLが増える)
  • URLのみで情報がわかるようにする

実例(頻出のタイプに関して)

一覧系のメソッド(GET)+新規追加

http://example.com/api/v1/articles

個別参照(GET) + 個別編集(PUT)+削除(DELETE)

http://example.com/api/v1/articles/ID番号

などでしょうか。Laravelだと一気に作ることができます。

複雑なものは、

http://example.com/api/v1/customers/100/orders/200/comments/2

などのパターンが多いようです。(リンク参照)

上記だと、顧客ID100のお客さんの注文番号200の商品の2番目のコメントみたいな感じですかね。

参考URL

RESTful APIのURI設計(エンドポイント設計)

REST APIの始め方 (名前の付け方)

REST APIとは? – API設計のポイント!

-PHP, ドキュメント作成, プログラミング全般
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

CIことはじめ

業務でJavaのテキスト変換ツールを作成。 プログラムよりもCIツールを使って他人の環境下で正常に稼動させるためにどうするかの調査に時間かかりましたね。 今回やりたかったことは下記の通りです。いわゆる …

no image

テスト分類について

一般的なテスト工程での分類や個人的に大事だと思うこと Contents1 全プロセス共通1.1 テストデータ作成バッチ1.2 ローカル、開発、ステージング、本番の分岐2 PT(プログラムテスト)、単体 …

no image

シェルスクリプト ファイル読み込み・switchなど

以前のエントリーに引き続き、シェルスクリプトでログを解析する処理があってそこで覚えたことなどをまとめておきます。 Contents1 ファイル読み込み2 switch文2.1 基本パターン2.2 条件 …

no image

CakePHPでのプレフィックスルーティング

cakePHPではルーティングがデフォルトでは/コントローラ名/アクション名となります。 ところが管理画面などはadmin/コントローラー名/アクション名などと変則的なURLにしたいことも多いでしょう …

no image

キャッシュについて(主にmemcachedを中心に)

Webサービスのパフォーマンス向上で目に見えて効果があることの一つがDBへのアクセス回数を減らすことです。 それはSQLを発行する回数を少なくするなど、普段からのプログラムの書き方ももちろん大事なので …