タグ

ブックマーク / qiita.com/suin (3)

  • PUT か POST か PATCH か? - Qiita

    CRUDの操作をRESTで表現すると一対一で対応していないことに気づきます。RはGET、DはDELETEと考えておいて良さそうですが、CとUはPUT、POST、PATCHの3つの選択肢があり、APIを設計していると迷います。整理するためにまとめておきたいと思います。 下記の資料を参考にしました。 http - PUT vs POST in REST - Stack Overflow When to use PUT or POST | - The RESTful cookbook GitHub API v3 基的な考え方 PUT: リソースの作成、リソースの置換 POST: リソースの作成 PATCH: リソースの部分置換 PUTはPOSTと違い、リソース名を指定して作成または更新をかけるメソッドです。PUT /articles/3421は新規作成かもしれませんし、更新かもしれません。PU

    PUT か POST か PATCH か? - Qiita
    labga
    labga 2016/01/23
  • 面倒くさいパーサの実装もDSLで書くだけ!そう、Scalaならね - Qiita

    この記事では、Scalaのパーサコンビネータを用いて、BNF風の定義を書くだけで、オブジェクトのマッピングからパースエラーのハンドリングまでできてしまう高機能なパーサを作る方法を解説します! パーサコンビネータとは? Scalaにはパーサコンビネータというライブラリがあります。BNFと似たの記法で構造を定義するだけで簡単にパーサを実装することができます。たとえば、□□□-□□□□のような形式の郵便番号をパースするコードは次のように書くことができます。 import scala.util.parsing.combinator._ object PostalCodeParser extends RegexParsers { def postalCode = """\d{3}""".r ~ "-" ~ """\d{4}""".r } println(PostalCodeParser.parseA

    面倒くさいパーサの実装もDSLで書くだけ!そう、Scalaならね - Qiita
    labga
    labga 2015/09/16
  • Scala: パーサコンビネータで行数・文字数を取得しながらパースする - Qiita

    Scalaパーサコンビネータのデフォルトの振る舞いでは、パースしたトークンの何行目・何文字目といった位置情報は捨てられてしまいます。この記事では、Positional trait を使って位置情報を含んだトークンの取得方法を解説します。 パーサコンビネータの基的な使い方は、面倒くさいパーサの実装もDSLで書くだけ!そう、Scalaならね - Qiitaをご覧ください。 実装のポイント 1. Positonal traitをインポートしておく 位置情報をトークンに持たせるには Positonal traitが必要になるので、インポートしておきます。 2. トークンのcase classを作っておく トークンのcase classを作るのですが、その際ベースとなる sealed trait を作り Positonal trait を継承しておきます。更に、case classはベースとなるそ

    Scala: パーサコンビネータで行数・文字数を取得しながらパースする - Qiita
  • 1