0
0

More than 3 years have passed since last update.

初心者のためのRESTful

Last updated at Posted at 2020-01-05

概要

web APIを設計するためのシンプルな標準の方法であるRESTfulの概要をメモとして残す。
またその際に重要となるhttpStatusCodeやCRUDの概要も追記する。

参考資料

オライリージャパン出版 Jonathon Rasmusson 著 玉川紘子 訳
「初めての自動テスト webシステムのための自動テスト基礎」

RESTfulとは

参考資料p67より

「ねえみんな、Webのリソースにアクセスする方法をそれぞれ独自に定義するんじゃなくて、探しているリソースの名前をURLとして定義して、リソースと通信するための操作を4つの動詞に絞ったらどうだろうか、つまり、GET、POST、PUT、DELETEの4つだ。」

RESTfulとはwebAPIを設計するときの方法またはその定石のことである。
| リソースに対する動作 | リソースの場所 |
|:-:|:-:|
| HTTP GET | /users/:id |
| HTTP POST | /users |
| HTTP PUT | users/:id |
| HTTP DELETE | users/:id |

リソースの場所に対してURLを決め、そのリソースに対する動作をするIDをつけることで、APIが完成する。これがRESTである。

HTTP ステータスコード

httpStatusCodeとはリソースに対しての動作が行われたとき、それをユーザに「正常に終了したのか」、「要求された情報が見つからなかったのか」、「サーバー側で何らかのエラー発生したのか」等をレスポンスに括り付けてユーザに教えるものである。

app.js
app.get('/users/:id', async (req, res) => {
 try{
 //ユーザーのリストからidを用いて探す
  const user = await Users.findById(req.params.id)
  if(!user){
   //見つからなかったら
   res.status(404).send()
  }
  //正常に終了した
  res.status(200).send(user)
 }catch(e){
  //何らかのエラーが発生した
  res.status(500).send(e)
 }
})

コードはNode.jsサーバーにおいて、URL内のidを用いてMongoDB内のリソースから該当するユーザを探し、該当する者がいれば200を返し、見つからなければ404を返し、何らかのエラーが発生すれば500を返している。

このようにステータスコードを理解することによって、サーバーがリクエストに対してどのような処理をしたのかがわかるようになる。
この3つのほかにも様々なhttpStatusCodeがある。

HTTPレスポンスステータスコード
https://developer.mozilla.org/ja/docs/Web/HTTP/Status

ここには様々なhttpStatusCodeが載っている。百の位の数字によって意味が分かれている。
初心者ながら他に私がよく使うもの、よく見るものは新しくユーザ登録をしたときに成功したことを示す「201 created」やコードが間違っているときに返される「400 bad request」である。

CRUDとは

CRUDとはcreate(作成)、read(読み出し)、update(更新)、delete(削除)という4つの動作を表すものである。

これはREASTfulにおいては下記のように対応している。

| GET | read |
| POST | create |
| PUT | update |
| delete | delete |

CRUD操作を行うAPIをもつとはこれらの操作を可能とするwebアプリケーションであるということである。

まとめ

RESTful、HTTPStatusCode、CRUDを理解することでどういったAPIを持ったwebアプリケーションを作っていよいかという作る前の疑問を解消してくれる。あとはこれらのAPIを備えたwebアプリケーションを作成するだけである。

0
0
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
0
0