Web API トレーニング 02 -エンドポイント設計編-
エンドポイントとは
これ
http://fugahoge.com/v1/articles
というURLがあったとして、ホスト名とエンドポイントで分けることができる。
ホスト名は
http://fugahoge.com/v1
になって、
エンドポイントは例えばこうなる
/articles
まぁベースとなるURLがホスト名、後に参照したいリソースの集合をエンドポイントと呼ぶみたい。
エンドポイントを考える
エンドポイントは、「データの集合」「個々のデータ」についてHTTPメソッドで操作していくことを表すように設計する。
個人的には、 何を、どうする? っていうイメージで設計するものかなと。
具体的にいえば、
「リソースとその集合」を、「HTTPメソッドで操作」する
これに帰結するかなと思ったので、そういう意識でエンドポイント作りたい
エンドポイントを設計するにあたっての留意事項
リーダブルコードに通づるところg(ry
検索とクエリパラメータ
GETメソッドによく付けるなぁと。
http://fugahoge.com/v1/users
例えば上記がユーザーを取得するAPIのエンドポイントだとして、
単に叩いたら全ユーザーを取得してしまいかねない。
そこでクエリパラメータと呼ばれる実行時の条件をエンドポイントの後ろにくっつけるようにしてもらう。
ページネーション
あるデータの集合の一部分を取得する、といった時に使う考え方。
データを、 どこから、どれくらいの量を 取得するのか、というのを指定する。
よくある例としては、
どこから | どれくらい |
---|---|
per-page | page |
offset | limit |
こんな感じのものが多い
次回
次は絶対位置でデータを取得しようねの話
WebAPI トレーニング 01 -エンドポイント設計編-
Androidのフロントしかやってなかった人間がWebAPIについて勉強していることをまとめてみます
あと自分の超短い経験上の解釈も入ってるので、あまり参考にならないかも
間違ってたらガツンと優しいレビューをお願いします!!
WebAPIとは
- ITとしてのエコシステムを確立する為に、Webの仕組みを通して、対外へサービスを提供する
- WebAPIの実例として、Twitter, Facebook, Amazonなどが挙げられる。
- 共通のデータ操作ロジックを持つことができるので、チーム間で連携とりやすい(社内
WebAPIと美しい設計
使いやすい
使い手のことを常に考える。 エンドポイントの設計とか、RESTなAPI設計を目指す変更しやすい
一度作ったものを改修したり、技術的負債を取り除いたりする為にも、 変更しやすい柔軟な作りにするのが良い。頑強
データの通信にはセキュリティのリスクがつきものなので、リスクヘッジしっかり取れる設計にする外部に公開して恥ずかしくない(企業価値を高めるファクター)
エンドポイントに関係するが、名付け方やAPIの使い方が変に複雑だったり、使いにくいのは色々技術力怪しまれるので、シンプルで冪等性ある使いやすいものにしようねっていう。
URIの設計
考え方は、「リソースを表現している」 かどうか
- 短くて入力しやすい
- 人間がぱっと見て理解できる
- 大文字小文字が存在していない(フォーマット)
- 使う側が使いやすい
- サーバ側が使用するアーキテクチャを表現しない
- 命名ルールが統一されている
これらを踏まえた上で、アクセス先が「リソース」であることを簡単に想像しやすいURIを考えるのが良い。
リーダブルコードに通づるところ がかなりある気がする!!
HTTPメソッド
HTTPメソッドってどんなのがあるのか
GET 情報の取得 を表すメソッド
GETはあくまでデータの取得・参照であって、データを操作するものじゃないPOST
基本的には新規のデータを送信、投稿、登録する、といった時に使う。 更新などはPUT, PATCHのメソッドがあるから
とはいえ、HTML4時代はformで扱えたメソッドがGET/POSTのみだったので、
その名残でPOSTでデータの変更とかすることもあるが・・・
APIを叩くときはformを使うばかりじゃないので、PUTやDELETEを積極的に取り入れていくのが良い。PUT
指定したデータそのものの変更、更新に使うPATCH データの一部変更に使う。
DELETE
データの削除に使う。
GET/POSTしか使えないあなたの為に
X-HTTP-Method-Override ヘッダの活用
X-HTTP-Method-Overrideヘッダは、リクエスト先に対して、本来使いたいメソッドの定義を書いておくもの。
GET/POSTしか使えなくて、でもPUT、DELETEメソッドを使いたいなってなったときはそっと書いておくと、リクエスト先がそのヘッダを解釈して指定されたメソッドを実行するようになる。
次回
エンドポイントの設計について考察、留意点をかいてみます。
参考資料
こちらを使って勉強させてもらってます。ありがとうございます
Web API: The Good Parts
Sassについて勉強した
Yo!!
ってことで、勉強会でSassについて聞いてきましたよー勉強になったー!
そのまとめを書いてみた。
Sassとは
環境構築
Rubyが実行できる環境が必要
installerあるので探してね
- 入れてRuby -v でバージョン確認
gem install sass
- node.jsのインストール
npm init
npm install gulp -g
<= グローバル環境にinstallされる
ornpm install gulp --save
<= ローカル環境にはいるnpm install gulp-sass -g
gulpfile.js
をローカル環境に作成する
var gulp = require("gulp"); sass = require("gulp-sass"); plumber = require("gulp-plumber"); gulp.task("sass", function() { gulp.src("./sass/**/*.scss") //scssのすべてのファイルを対象 .pipe(plumber()) //gulpを止めないやつを先にやる .pipe(sass()) //Sass .pipe(gulp.dest()) //吐き出し先 }); gulp.task("default", function () { //sass配下の.scssを監視して、変更があれば第二引数のタスクを実行する gulp.watch("sass/**/*.scss", ["sass"]); })
タスクランナーとは
sassファイルをコンパイルする作業などを自動実行するツール
アンインストール
npm uninstall [packagename]
インターポーレイト
$imagePath = "./fuga/hoge/tetete/"; .component { .bg { background-image: url(#{$imagePath}bg01.jpg); } }
変数をhtml内で参照するためのもの?
gulpを止めない方法
plumberってのをinstallする
npm install plumber -g
npm install plumber --save
@mixin
androidでいう/styleの定義と似てる
@mixin test { color: red; } body { @include test; }
定義をmixinするのですミックスインを
@import
外部ファイルを読み込みたいときに使用する
拡張子はいらない感じ
Webの世界もずいぶん楽しくなったね。 HTML4でホームページ作ってた頃と違うね。
目指せ!Androidマン Vol.1 四則演算で一歩前進!
とりあえずの筆者の目標。
目指すは、一人でAndroid作れるよってところまで記事書く!
時間出来たらツラツラっと書ければいいなと思っておりまする。
今回の目標
記念すべき第一回は、Javaで四則演算できるようになる!です。
前回は、試しにJavaに触れる、ってところをやりました。
気になる人はこちらを参照くださいまし。
91stardust-atelier.hatenablog.com
Javaで四則演算!
足し算やってみる。
まずは、新しくファイルを作って、以下のコードを打ち込んでください。
名前は
Calculator.java
としてください。
class Calculator { public static void main(String[] args) { int valueA; //Aという整数値の"箱"を用意する int valueB; //同様にBという整数値の"箱"を用意する valueA = 10; //箱に整数値を入れる。 valueB = 20; //↑と同様。 int result = valueA + valueB; //2つの数値を加算する System.out.println("valueA + valueB = "+ result +" です!"); } }
そこまで来たら、以前のように、 コンパイル をして実行してみる!
javac Calculator.java or javac -encoding UTF-8 Calculator02.java //コンパイルが成功したら java Calculator
以下のような画面が出れば正解!
引き算、掛け算、割り算
足し算が出来るようになれば、他の演算も余裕ですよ!
まずは、新しくファイルを作って、以下のコードを打ち込んでください。
名前は
Calculator02.java
としてください。
class Calculator02 { public static void main(String[] args) { int valueA = 12; //このように数値の箱と数値自体を1行で用意することもできます! int valueB = 3; int minusResult = valueA - valueB; //2つの数値を減算する int multipleResult = valueA * valueB; //掛け算はアスタリスク int divideResult = valueA / valueB; //割り算はスラッシュ System.out.println("valueA - valueB = "+ minusResult +" で、"); System.out.println("valueA * valueB = "+ multipleResult +"、からの"); System.out.println("valueA / valueB = "+ divideResult +"になります"); } }
コンパイルしてみよう!
javac Calculator02.java or javac -encoding UTF-8 Calculator02.java //コンパイルが成功したら java Calculator02
次の画面みたいになれば完璧。
四則演算してみよう
新しくファイルを作って次のコード試してみる! 名前は
Calculator03.java
としてください。
class Calculator03 { public static void main(String[] args) { int valueA = 38; //このように数値の箱と数値自体を1行で用意することもできます! int valueB = 12; int result = valueA + valueB / 2; //これは、四則演算的に割り算から先に計算されますよね? int mixedResult = (valueA + valueB) / 2; //これはどうなるでしょうか! System.out.println("valueAとvalueBの平均? = "+ result +"となって、平均ではない、ですよね?"); System.out.println("valueAとvalueBの平均 = "+ mixedResult +" で、()が先に優先されて計算されてるのが分かる!"); } }
終わったら コンパイル して実行してみてください! 今度は自力でやってみてくださーい。 答えは次回こっそり書いておきますw
今日のシメ
こんな感じで四則演算できます!
他にも、剰余計算(割った 余り を出す演算)やシフト演算とかも出来ます。
ゲーム作りたい人は剰余計算は知っておかねばですねw
次回はそこら辺の話とか、変数の話とか、コメントの話しようかな~。
また気が向いた時まで!
Happy New World !!
明けましておめでとうございます。
いつかやってやろうと思ってた備忘録ブログはじめました。
基本的に自分の自分による自分のためのブログにしようと思っております。
なので、書いてること信用し過ぎて、ウソついてんじゃねえとかあまり怒らないでください;;
こういうのもあるんだ~ぐらいに見てくれたらうれしいです^^
基本的にAndroidのスマホでアプリとか作ったりして遊んでます。
毎日生きている上で勉強したことを社会的に問題ない範囲で書くつもりです。(汎用的なレシピを書くってことです。なるべく。
Java初め
せっかくなので、Android触ってみたい人のために、その基礎になるJavaのhappy new worldをやってみましょい!
Javaを使えるようにする。
入れたら次はこれを書く
好きなテキストエディタ(よくわからない人はメモ帳とか開こう)で以下のコードを打ち込む。
class NewWorld { public static void main(String[] args) { //黒い画面に Happy New World!! という文章を表示する System.out.println("Happy New World!!"); } }
黒い画面を開いて実行準備する
windowsなら コマンドプロンプト
、macなら ターミナル
を開く
この時、 コンパイル という、コードを実行するための準備操作が必要になるのでそのコマンドを打つ。
(windowsだとこう)
cd your\saved\directory\ javac NewWorld.java
(macだとこう)
cd ~/your/saved/directory javac NewWorld.java
実行してみよう!
それで、次の画面が出てきたら実行に成功してます!!
トラブルシューティング
画面に MS932にマッピングできない 的なエラーが出たとき
windowsでもmacでも、そんなエラーが出ちゃったら、こうしてみてください。
保存したときにエンコードの指定がShift-JISになってたり、UTF-8になってる場合はそうしないとダメなこともあります。よく。
javac -encoding UTF-8 NewWorld.java
Javaの環境構築がなんか出来ない
がんばってください。エラーを見つけるのもまた修練
おわり
こんな感じでゆるくやっていきますw