こんにちは。メルペイ バックエンドソフトウェアエンジニアの id:koemu です。 今日は、外部APIと連携する機能のデータの持ち方について、振込申請のシステムを事例に取り上げていきます。 基本データ・拡張データに分ける 定義 まず、データを、「基本データ」「拡張データ」に分けます。 ここで、「基本データ」とは、提供する機能において最低限必要となる情報です。振込申請ですと以下のデータとなります。 名義 口座番号 申請日 申請受理日 振込完了日 ステータス(受付完了/送金完了/送金失敗/その他) 一方、「拡張データ」とは、基本データでは網羅していない、外部APIが必要としているデータを指します。例えば、連携用のレコード別のIDや、ステータスの遷移などです。振込申請ですと次のデータになります。 ステータス(プロセッシング事業者が持つより詳細なステータス) IDのマップ(基本データと拡張データ
VOYAGE Lighthouse Studio の海老原 (@co3k) です。先日 30 歳になった記念としてタイトルはオヤジギャグです。 さて、普段は 神ゲー攻略 というゲーム攻略サイトを運営しているのですが、とある派生サービスを立ち上げるにあたり、 Web API スキーマ定義を gRPC に基づく形式の Protocol Buffers で書き、 protoc-gen-swagger プラグインを介して OpenAPI 定義ファイルとして生成する、というアプローチを採りました。 yugui さんの素晴らしい記事、「今さらProtocol Buffersと、手に馴染む道具の話」によってスキーマ定義言語としての Protocol Buffers がにわかに注目を浴びて以降、似たようなことをやりたいという方もいらっしゃるのではないでしょうか。 ところが、おそらく単体で protoc-g
Zalando’s software architecture centers around decoupled microservices that provide functionality via RESTful APIs with a JSON payload. Small engineering teams own, deploy and operate these microservices in their AWS (team) accounts. Our APIs express most purely what our systems do, and are therefore highly valuable business assets. Designing high-quality, long-lasting APIs has become even more cr
Send feedback API design guide Stay organized with collections Save and categorize content based on your preferences. Changelog Introduction This is a general design guide for networked APIs. It has been used inside Google since 2014 and is the guide that Google follows when designing Cloud APIs and other Google APIs. This design guide is shared here to inform outside developers and to make it eas
今日では HTTP(s) で API が公開されることは当たり前の時代ですが、エラーをアプリケーションにどう伝えるかは、個々の API の設計に依存していました。特に、HTTP ステータスコードは有限であり、元々持っている意味があるので、自由に使うことはできません。API はそのドメインごとにもっと複雑で細かなエラー情報があるはずで、それらはレスポンスボディに載せてアプリケーションに伝えることになりますが、その書式に規定は今までありませんでした。 HTTP API にて、アプリケーションにエラー情報を伝達するための(レスポンスボディに載せられる)標準的な形式が、RFC7807 Problem Details for HTTP APIs で定められています。適用例としては、以下のようになります。 HTTP/1.1 403 Forbidden Content-Type: application
1 Overview JSON-RPC is a stateless, light-weight remote procedure call (RPC) protocol. Primarily this specification defines several data structures and the rules around their processing. It is transport agnostic in that the concepts can be used within the same process, over sockets, over http, or in many various message passing environments. It uses JSON (RFC 4627) as data format. It is designed t
At Etsy we have been doing some pioneering work with our Web APIs. We switched to API-first design, have experimented with concurrency handling in our composition layer, introduced strong typing into our API design, experimented with code generation, and built distributed tracing tools for API as part of this project. We faced a common challenge: much of our logic was implemented twice. All of the
Web APIの開発を担当しているswdyhです。 以前からWebサービスのサーバサイドの開発をしていたんですが、トレタに入るまでアプリのためのWeb APIの開発というのはしていませんでした。トレタに入って2年半くらいずっとアプリのためのAPIを開発していて、同じサーバサイドの開発でも、それまでとの開発とは違う点があり、悩ましくも面白く感じたのでまとめてみました。 サービスとアプリの話 トレタで提供しているサービスは、飲食店むけの予約管理サービスで、電話などで予約を受け付けたときに、iPadのアプリを操作して予約を入力してもらい、実際にお客さんが来店したときにはiPadを見て案内するというふうに使ってもらうものです。他にもいろんな機能やこだわりポイントがあるサービスなんですが、そのへんはWebサイトを見てみてください。 トレタのアプリはiPadのネイティブアプリで、ほぼ全てのデータをサー
apiDoc creates a documentation from API annotations in your source code. Java, JavaScript, PHP, … CoffeeScript Elixir Erlang Perl Python Ruby Lua /** * @api {get} /user/:id Request User information * @apiName GetUser * @apiGroup User * * @apiParam {Number} id Users unique ID. * * @apiSuccess {String} firstname Firstname of the User. * @apiSuccess {String} lastname Lastname of the User. */ ### @api
Swaggerは、REST APIの仕様とそれに関連するツール群の総称です。REST APIの仕様を定義したJSONファイル(Swagger Spec)を軸に以下のようなツールから構成されています。 Swagger UI - Swagger Spec から動的にAPIドキュメントを生成するツール Swagger Editor - Swagger Specのエディタ Swagger Codegen - Swagger Specからクライアントのコードを生成するツール 最近では、Open API InitiativeがAPIの記述のためにSwaggerを採用して話題になりました。 www.publickey1.jp APIドキュメントのメンテは結構面倒 一般的にAPIの仕様書は、古くはExcel/Wordなどを使ったり、最近ではWikiやMarkdown形式で記述したりなどプロジェクトによって
最近のウェブ開発では各機能ごとをAPIでつなぎ込む時代になっています。 そのため、各チームが開発をしていく上で、 他のチームにAPIの仕様を伝える方法をきちんとまとめておく必要が出てきています。 そんな中でAPIドキュメントにどのような役割が求められていて どのような選択肢があるか、一旦自分の把握している知識をまとめています。 (ここで書いているAPIは、httpでアクセスしたら、JSON形式でレスポンスを返すウェブサービスのAPIを指しています) APIドキュメントを用意する上で、すぐにぶつかる壁 APIドキュメントを用意する場合に、何も考えずにExcelやwikiにまとめると、早い段階で メンテナンスのコスト の問題にぶつかります。 『APIドキュメントを書く時間がない』 『本当にドキュメント通りの結果が返ってくるか、試してみないとわからない』 『実際に返ってくるAPIとレスポンスが違
最近、Swaggerという単語を聞く機会が増えていませんか?MicrosoftやGoogle,IBMが、REST APIの記述標準化を目指した「Open API Initiative」という団体を立ち上げ、そのベースをSwaggerを利用するということで一躍注目を集めるようになりました。しかし、Swaggerというものを調べるとツールの話やドキュメントの話が出てきて、何なのこれとなることが必定です。ということで、WebAPIとは切っても切れない関係のSwaggerの話を簡単にしてみます。 Swaggerとは? Swaggerとは、一義的にはREST APIを記述する為の仕様です。当初から、Swaggerが標準の仕様になることを目指しますよと宣言していて、米国等ではデファクト・スタンダードとなっていました。それが、「Open API Initiative」が出来たことにより、実際に標準の仕様
Design First!Stop writing boilerplate. Start designing solutions that matter. Let Goa handle the rest. Start Building Better Services Development Done RightGoa transforms how you build microservices in Go. Design your solution once, and watch as Goa generates production-ready servers, type-safe clients, and comprehensive documentation. Focus on what matters: building great services that scale. Acc
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く