1
/
5

森田ドラゴンのインターンシップ ~24日目~ APIは謎み

こんにちは高知からリモートインターンしている森田ドラゴンです。前回は設計を書いていましたが、今日はAPI周りで悩んでいました。前のインターンの時にAPI GWを触った時は、APIの詳細よりも、作ることを優先していたので、パラメータの詳細まで理解していませんでした。なので、その辺りを調べたり、そもそもRESTってなんだっけと、色々調べていました。

関数仕様書?

前回、関数仕様書が読みづらいとの指摘があったので、「関数仕様書 サンプル」で調べて、でてきた画像を参考に設計してみました。 僕の中で関数仕様書をどこまでかけばいいのかの定義が曖昧で、pythonやjsについて詳しい知識がないせいで、微妙なできの仕様書になってしまいました。眺めていても、なんとなく違うような気がしてきます。それを言語化できないのは、勉強不足なせいなので、色々考えてみたいと思います。

追記:
関数仕様書は、文章1行がコードの1行みたいな感じで書くといいよとアドバイスをもらいました。詳細まで書く必要があるので、ちょっと大変そうです。ただ、設計があればあとはコードを書くだけなので、逆に楽かもしれません。

APIはパスパラメータで複数のデータを送れない?

設計はとりあえず置いておいて、今のAPIの設計で、データが送れるかどうか試して見ました。ただ、最初の段階で勘違いをしていた?かもしれません。

パラメータとして使用するために、{} で括る必要がありますが、僕はリソース名の欄でくくってしまい、思ったような結果になっていませんでした。正解は単純でリソースパスの欄で{} を使って括るだけです。APIについての理解が浅いので、「複数のデータは送れないのか、jsonか何かでくくってしまって送るのか?」と勘違いして進めてしまいました。

調べる過程で、REST APIやAPI GWについて色々勉強できたのはよかったかな、と思いますが、勘違いで進められなかったので、悔しいところではあります。色々調べましたが、自分が理解できる範囲だったのは、トップのイメージにもある4つの項目です。他に調べたことは、ふんふんなるほど、ぐらいの理解です。

パスパラメータ: パスに追加されるパラメータ。
特定のリソースを識別するために必要なものはパスパラメータ
クエリパラメータ: ? の次のやつ。 &で繋げていける。 ?を複数書いても繋げていけない。検索やフィルタやソートなどで必要になるパラメータはリクエストパラメータとするのが良い。
HTTPヘッダー: httpの最初に付いてくる リクエストが書かれている場所。
Content-Typeもheaderにある。レスポンスを定義しているのがここだから、api gatewayで設定できるようになっている。
マッピングテンプレート: データ処理などの分野では、異なるシステムの項目や要素のうち、同じものを指し示しているものを関連付ける作業や処理をデータマッピングという。なので、おそらくそれを指しているが、構文のようなものがでてこなかった。

マッピングテンプレートは仕組みや、やっていること( レスポンスやリクエストで送信するデータの整形 )は理解できるんですけど、書き方を調べてもいまいちピンとくるものがでてこないので、困ってます。

追記:
POSTで動かせばJSON形式でデータを送れるみたいです。GET POSTっていうのは、明示的にするための仕組みだと思ってましたが、仕組み的にも違うみたいです。APIでさえよくわかっていないのに、HTTPというよくわからない仕組みまで乗っかってきて、ちょっと気持ち悪いです。理解するにはRFCとかアプリケーション層から掘り下げていくことだと教えてもらいました。2年待ってください

感想

API GW マッピングテンプレート ~ と調べると、AWS ドキュメントはでてきますが、マッピングテンプレートはなんなのか、という記事はあまりヒットしません。おそらく、データマッピングのことを指しているのだろう、と推測でかいています。API GWは前提知識が必要になってくるサービスなので、勉強しないとダメですね。本がいいですかね?おすすめがあれば教えてもらいたいです。

株式会社サーバーワークス's job postings

Weekly ranking

Show other rankings
Invitation from 株式会社サーバーワークス
If this story triggered your interest, have a chat with the team?