[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

restfulに関するa2ikmのブックマーク (45)

  • GraphQLとRESTfulについて今日考えてたこと Backend for Usecase/Resourceについて - 余白

    DISCLAIMER: これは当にただのメモ書きで、これがベストプラクティスだとかいう話ではないので、同じようなことを考えてる人いたら今度議論しましょうよ、って程度の話の種。 GraphQLを使うべきスポット、RESTfulが好ましいスポットについて今日ぼんやり考えていて、なんとなく言語化ができる気がするので文字起こししてみる。 Backend for UsecaseとBackend for Resource バックエンドのAPIには2種類あって、 「データ」を構成する「リソース」を提供するもの アプリケーションの「ユースケース」がもつシナリオのなかで登場する「データ」部分を埋めるためのもの を区別することが必要そう、と思っている。 まず前者を Backend for Resource (BFR)と呼ぶことにする。これはわかりやすくて、これはまさしくRESTfulそのもの。 RDBやそう

    GraphQLとRESTfulについて今日考えてたこと Backend for Usecase/Resourceについて - 余白
  • Go + gRPCによるマイクロサービス構築 - 一休.com Developers Blog

    こんにちは。宿泊事業部の宇都宮です。 最近、とあるマイクロサービスをローンチしました。このアプリケーションの業務的な役割は諸事情により省略しますが、以下のような特性をもっています。 社内の多くのサービスから利用される 一休.com 一休.comレストラン 一休.comギフト 一休.com海外 このサービスが落ちると、主要サービスの予約処理が止まる 😱 想定されるリクエスト数は、平常時で30req/sec、ピーク時には60req/sec程度になります。行う処理はシンプルで、DBにいくつかSELECT文を投げて、ビジネスロジックに沿った結果を返すことです。 また、基盤系のアプリケーションなので、各開発者の開発環境(WindowsMacが混在)でも動作する必要があります。 したがって、このアプリケーションに求められる要件は、 高パフォーマンス 高信頼性 クロスプラットフォームで動作すること

    Go + gRPCによるマイクロサービス構築 - 一休.com Developers Blog
  • RESTful API設計におけるトランザクション - Qiita

    処理フロー トランザクション開始 productsをSELECTしてstockがあるか確認する ここで商品を確保する(productsの該当レコードのロック)が必要となる ordersにINSERT order_detailsにリクエストの商品配列の件数分INSERT(order_id=ordersと紐付け, product_id=リクエストから) 外部APIに連携して決済する(total_priceを計算して、cardを渡す) 失敗すれば ロールバック 決済が成功すればproductsをUPDATE(stockを減らす) paymentsにINSERT(order_id=ordersと紐付け, amount= total_price, card=リクエストから) コミット 処理全体がトランザクション内で実行されるため外部APIで失敗した場合にロールバックすればなんの問題もないように思われ

    RESTful API設計におけるトランザクション - Qiita
  • Transaction Resource パターン - リソースモデリングパターン

    POST /transactions ↓ PUT /transactions/123 ↓ PUT /transactions/123/committed 「Webを支える技術」p278より引用 実際のシステムでは、より複雑な処理、たとえば複数のリソースにまたがった変更をひとまとまりに扱う、いわゆるトランザクションが必要になるケースもあるでしょう。 主にCollection & Member Resource パターンを用いたトランザクションの実装。 ウィザードなどにも適用可能で、モデルでないリソースになりうる。 例 http://qa.atmarkit.co.jp/q/2555#answer_15110 の id:moro さんの回答より引用 やり方はいろいろありますが、データインポートなど複数のリソースに影響を及ぼす、バッチ的な動きをさせたい場合には「トランザクションリソースを作る」とい

    Transaction Resource パターン - リソースモデリングパターン
  • GraphQLは何に向いているか - k0kubun's blog

    今年GitHubGraphQL APIを正式公開したあたりから、GraphQLが去年とかに比べちょっと流行り始めたように感じる。idobataがGraphQL APIを公開したり、Kibelaも公開APIGraphQLで作ることを宣言している。 利用者側からすると使えるインターフェースの中から必要なものを調べて使うだけなのであまり考えることはないのだが、自分がAPIを提供する立場になると話は変わってくる。REST APIGraphQL APIはどちらかがもう一方のスーパーセットという風にはなっておらず、どちらかを選択すると何かを捨てることになるので、要件に応じてどちらを選ぶのが総合的に幸せなのか考える必要がある。 以前趣味GitHub連携のあるサービスを作っており、それを最近GraphQL API v4を使うように移行し、そこでついでにそのサービスのGraphQL APIを書いてみ

    GraphQLは何に向いているか - k0kubun's blog
  • gRPC and REST with gRPC in practice

    go-sqlite3を使ってCloud Spannerエミュレーターを作ってみた / Cloud Spanner emulator with go-sqlite3

    gRPC and REST with gRPC in practice
  • Web Clients for Ruby and What they should be in the future

    Sep 10, 20165 likes11,167 viewsAI-enhanced description Toru Kawamura discusses the need for web clients in Ruby to be adaptable to change by being decoupled and easy to reuse through versatility. He outlines some of the issues with existing tightly coupled clients and gems dedicated to specific APIs. Kawamura proposes a "Web Client" concept modeled after Rack middleware and Faraday middleware, whi

    Web Clients for Ruby and What they should be in the future
  • RESTful#とは勉強会で(Railsでの)ルーティングの考えだし方の話をしました - moroのブログ

    RESTful な設計って、ってマスタメンテ作るにはいいけどまともなサービス作れるの? という疑問に対して、結構やればアプリケーションできるので安心してください、という話をしました。 「独自研究」セクション以外はだいたいふつうに経験したことです。「独自研究」セクションはたぶん、今流行りのオーケストレイションレイヤをどうするかというところになるのかな、と。APIといいつつ、HTMLを返す話ばかりですが、これはAPIHTMLをあえて区別せずそれは単にリプレゼンテーションが違うだけです、という意図でした。 転職してから初の社外発表が前職オフィスでやるというのが面白かったです。永和メンバーも結構たくさん会えてよかった。来てくださった方、開催をアレンジしてくださった方、ありがとうございました。

    RESTful#とは勉強会で(Railsでの)ルーティングの考えだし方の話をしました - moroのブログ
  • Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0064 号 バックナンバー Rubyist Magazine 0064 号 Rubyist Magazine 0063 号 Rubyist Magazine 0062 号 Kaigi on Rails 特集号 RubyKaigi Takeout 2020 特集号 Rubyist Magazine 0061 号 Rubyist Magazine 0060 号 RubyKaigi 2019 直前特集号 Rubyist

    Rubyist Magazine - スはスペックのス 【第 1 回】 RSpec の概要と、RSpec on Rails (モデル編)
    a2ikm
    a2ikm 2015/05/11
    意味論(推論?)と組み合わさってクライアントとサーバが勝手に喋り続けたら面白そう
  • リソースの一部更新におけるURL設計 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 概要 Webアプリケーションにて、リソースの一部更新を行う際、どのようにURL設計を行うとシンプルで美しいか(当はそこまで考えていなかったけど)悩んでいたところ、 @t_wada さんから素敵な設計指針をご教示いただきました。 記事はその内容に加えて、実際に自分で行ったこと、調べたこと、思った事など、まとめております。 あらすじ 数週間前にSIピラミッドからヒモなしバンジーを決めてWebの世界に飛び込んだ私は、小さな小さなWebアプリケーションをrails newから手探りで作っていました。 そんなとき、簡単なリソースの一部更新機能

    リソースの一部更新におけるURL設計 - Qiita
  • Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails

    This document summarizes Takuto Wada's presentation on reviewing RESTful web apps. It discusses best practices for designing RESTful resources and representations, including using nouns instead of verbs in URLs, making URLs reflect the meaning of resources, and ensuring resources are connected through hypermedia links and forms. It also covers appropriate use of HTTP methods, status codes, and con

    Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails
  • 《REST思想》と《リソース指向》と《Webページ》に関する(主にRailsの)話 - Qiita

    これはいわゆるWeb APIについて、ということかなと推測しました。RESTというのはAPIのプロトコルのことだと思われている傾向がありますが、そういうわけではありません。Web全体についてのもので、APIについてもWebアプリについても適用されるものです。 実はRESTでは「統一インターフェイス」の制約からメソッドについて規定されていますが、URLの形については特に規定されません(もちろんAddressabilityの面で重要であることは言うまでもありません)。なので実は/books,/books/1でなくてもいいのですが、これを規約(CoC)でズバッときれいに決めてしまったのがRailsのすごいところの1つです。 の追加や削除を行う場合は、情報をJSON形式でPOSTリクエストのボディとして送ります。application/x-www-form-urlencoded形式で送ることは

    《REST思想》と《リソース指向》と《Webページ》に関する(主にRailsの)話 - Qiita
  • 《REST思想》と《リソース指向》と《Webページ》を一緒にしてはいけない - Qiita

    の情報はJSONで表現されます。/books にGETリクエストした場合はレスポンスとしての一覧がJSONとして返されます。 の追加や削除を行う場合は、情報をJSON形式でPOSTリクエストのボディとして送ります。application/x-www-form-urlencoded形式で送ることは避けるべきです。 更新に失敗した場合、失敗した理由をJSON形式で返します。 ステータスコードは、取得時・更新成功時には200 OKを、更新失敗時には4XX番代を使うのがよいでしょう。 情報はJSON形式と書きましたが、XMLなどでも構いません。 しかし、正常系・異常系ともにアプリケーション内で統一された形式を利用してください。 リソース指向 の情報は/booksにあるとして、拡張子を変えることで、様々なフォーマットでデータを利用できるようにします。 例えばの一覧をJSON形式で欲しけ

    《REST思想》と《リソース指向》と《Webページ》を一緒にしてはいけない - Qiita
    a2ikm
    a2ikm 2014/03/22
    もにょっとした部分をJxck_さんが突いてた。リソース指向とRESTはまた違うのか、勉強しよう
  • Device Specific API Design - r7kamura per second

    The Netflix Tech Blog: Embracing the Differences : Inside the Netflix API Redesign Netflixの開発者ブログで触れられているように、Netflixは以下の4つの方針に沿って彼らのAPIを再構築した。 デバイスごとの差異を受け入れる コンテンツの収集と整形を分ける クライアントとサーバの境界線を再定義する 変化を促進する デバイスごとの差異を受け入れる REST APIのように1つの汎用的なインターフェースで全ての要件を満たそうというアプローチは、 APIへの理解が簡単になる一方、後から変更することは難しくなり、また非効率な処理を生み出しやすくなる。 この手のアプローチが重視しているのは、API提供者側の開発コストを下げることであり、 API利用者の利便性を第一に考えたものではないと彼らは考える。 API

  • Favoriteの設計実装はパターンとして使える - Qiita

    RailsでのfavoriteのURL設計 http://d.hatena.ne.jp/tkawa/20110508/p1 かなり前にこういう記事を書いたのですが、最近たまたま似たものをRailsで何回か実装する機会があって、これはいろんなところで使えるんじゃないかと思ったので、その設計実装パターンを紹介してみます。 モデル 任意のツイートに任意のユーザーがお気に入りをつけられるというもの。別にツイートじゃなくても何でもOKです。 class Tweet < ActiveRecord::Base has_many :favorites end class User < ActiveRecord::Base has_many :favorites end class Favorite < ActiveRecord::Base belongs_to :tweet belongs_to :use

    Favoriteの設計実装はパターンとして使える - Qiita
  • Kazuho@Cybozu Labs: REST におけるトランザクションについて (Re: Web を支える技術)

    といいつつ、ひとつだけ理解できないというか、納得できないところが。トランザクションのところがなんだかRESTっぽくないのがすごく気になる Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESSプラスシリーズ)(山 陽平) - ただのにっき(2010-04-23) 「Web を支える技術」は自分もとてもいいだと思う (教科書としてすばらしいし復習用としても読みやすいのでイイ) のですが、トランザクションの所だけは分かりづらいなと感じました。その原因は、atomic transaction で解決できる課題を例として使っているという点と、トランザクションと更新クエリのレイヤ分割がされていない、という2つの点によるものではないでしょうか。 HTTP 上でトランザクションを表現する必要があるケースのほとんどは、atomic transaction ではなく

  • HTTPメソッドのPOSTとPUTの冪等性 - アインシュタインの電話番号

    昨日の記事のはてブコメントにて、POSTとPUTの使い分けには冪等性が重要ですよとのアドバイスをいただいた。ので、冪等性について調べてみた。 冪等性と安全性 @tkawaさんに、はてブコメントにてアドバイスいただいたのは冪等という考え方。 これに加えて、性質の違いとしてPOSTは冪等ではないがPUTは冪等というのも重要です 冪等ってあまり聞かない用語だけど、この冪等についても、Webを支える技術にはちゃんと書いてあった。 冪等とは「ある操作を何回行っても結果が同じこと」を意味する数学用語です。たとえばPUTとDELETEは冪等ですので、PUTやDELETEを同じリソースに何回発行しても、必ず同じ結果(リソースの内容が更新されている、リソースが削除されている)が得られます。 安全とは「操作対象のリソースの状態を変化させないこと」を意味します。リソースの状態に変化を与えることを副作用といいます

    HTTPメソッドのPOSTとPUTの冪等性 - アインシュタインの電話番号
  • Railsのリスト操作におけるURL設計 - blog.takuyan.com

    前回の記事を基に、Facebookで #sendagayarb の皆さんとディスカッションした内容をここに残しておきます。 前回までの流れ 以下の様なリソースがあった場合、どのようなURL/コントローラでmove_higherやmove_to_bottomメソッドを叩くのか、というお題。 from_README_Example.rb1 2 3 4 5 6 7 8 9 10 11 class TodoList < ActiveRecord::Base has_many :todo_items, order: "position" end class TodoItem < ActiveRecord::Base belongs_to :todo_list acts_as_list scope: :todo_list end todo_list.first.move_to_bottom todo_

  • Restkit

    RestKit is an Objective-C framework for iOS that aims to make interacting with RESTful web services simple, fast and fun. It combines a clean, simple HTTP request/response API with a powerful object mapping system that reduces the amount of code you need to write to get stuff done. RestKit's primary goal is to allow the developer to think more in terms of their application's data model and worry l

    Restkit
  • リソースモデリングパターン

    Webアプリケーションについて、RESTfulなURL・リソース設計のパターンを見出すことで、 どのパターンかを判断するだけで、既存の Good Practice が適用できる 名前をつけて呼べるようにしたい Railsなどのフレームワークで簡単に適用できるようにしたい ということを目指しています。 ほんとうに役立つか これはパターンと言えるのか もっと他にもある だいぶ粒度がバラバラ 名前の付け方(パターンは名前重要) など、ぜひご意見をください。 パターン Collection & Member Resource パターン Singular (Singleton) Resource パターン Filtered Collection パターン Filtered Subresource パターン Multi-member Resource パターン Partial Resource パター

    リソースモデリングパターン