Do standards or best practices exist for structuring JSON responses from an API? Obviously, every application's data is different, so that much I'm not concerned with, but rather the "response boilerplate", if you will. An example of what I mean: Successful request: { "success": true, "payload": { /* Application-specific data would go here. */ } } Failed request: { "success": false, "payload": { /
今日では HTTP(s) で API が公開されることは当たり前の時代ですが、エラーをアプリケーションにどう伝えるかは、個々の API の設計に依存していました。特に、HTTP ステータスコードは有限であり、元々持っている意味があるので、自由に使うことはできません。API はそのドメインごとにもっと複雑で細かなエラー情報があるはずで、それらはレスポンスボディに載せてアプリケーションに伝えることになりますが、その書式に規定は今までありませんでした。 HTTP API にて、アプリケーションにエラー情報を伝達するための(レスポンスボディに載せられる)標準的な形式が、RFC7807 Problem Details for HTTP APIs で定められています。適用例としては、以下のようになります。 HTTP/1.1 403 Forbidden Content-Type: application
3行で伝える代わりにタイトルで説明してみた (親切心)。 (2016/07/30 2:45 追記) ちなみにコメント欄で指摘頂いた通り、今回問題視した PUT の設計も冪等と言えます。 私の冪等性の理解が間違っていたので、以下の冒頭の項目で説明する PUT の設計が RESTful じゃないと記載しているのは誤りです。 悩み DB の AUTO INCREMENT な値 (以下「連番」) をメッセージボディの JSON に含め、 そのリクエストを受け付けたバックエンドが DB の連番と比較し、 違っていればエラーを返すという設計の API があるとして、 PUT であるリソースを更新すると当然連番がインクリメントされるので連続で送ることができない。 つまり冪等性を保っておらず RESTful ではない。 では RESTful に実現しようとするなら一体どうすればいいんだろう?というので最近
めっきり秋めいてきました 第8回、9回目のRESTful#とは勉強会に関して書いていきます。 まずは8回目 講師の@tkawaさんが毎回用意してくれているGist #RESTudy 今日のポイントです https://t.co/55UhzRFQl6 — Toru KAWAMURA (@tkawa) 2015, 7月 1 会場 ピクスタさんに会場お借りしました!@yukainaさんありがとうございます! 内容としては最初は毎度おなじみの「Webを支える技術」の読書会、そして後半はワークショップ、「RESTfulなサイト作り~ひよこ編~」です。前回の続きとして http://zip.ricollab.jp/を元に、 ③「リソースにURIで名前を付ける」 ⑤「リンクとフォームを利用してリソース同士を結び付ける」 を考えました。 結構この作業、前回に引き続き難しかったです。 考えていくほどわからな
Introduction Retrofit turns your HTTP API into a Java interface. public interface GitHubService { @GET("users/{user}/repos") Call<List<Repo>> listRepos(@Path("user") String user); } The Retrofit class generates an implementation of the GitHubService interface. Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.github.com/") .build(); GitHubService service = retrofit.create(GitHubServ
別名: LDAPサーバーOpenDJを使おう(3) LDAPサーバーOpenDJを使おう(1) の続きの LDAPサーバーOpenDJを使おう(2) の続きです。いよいよ REST API の登場です。 LDAP で問い合わせるの面倒だから HTTP の REST API あったら便利だよねということです。OpenDJ にはそれ自身に組み込まれた HTTP サーバーと、任意の LDAP サーバーをバックエンドとして利用できる REST API Gateway がありますが、今回の紹介は前者です。 権限の問題が解決できずにずっと放置していましたが、もう OpenDJ を使うことはなさそうなので中途半端ですが公開します。なぜ使わないかというと各メジャーバージョンの最初のリリースしか公開されなくなり、Subscription を買わないと更新できなくなったからです。プロダクション環境で使うために
≪ 前の記事warファイルを Tomcat上で動作させる 次の記事 ≫JSON APIを PHPから呼び出して結果を表示する 本当のことを言うと、顧客はあなたがどんな技術を使ってそれを実装するかに興味などない 顧客に「サーバは弊社ホームページのものが既にあるので、そこで動くシステムを作って下さい」と言われたら大抵そのサーバは(Windowsでなければ) CentOSである。比較的お金をお持ちなお客様であれば RedHatの時もあるが、同じことだ。 ※もしDebianを使っているとしたらそれは訓練されたお客様なので別の対応を要する CentOSのクローン元である RedHat Enterprise Linuxはきわめて保守的な Linuxディストリビューションで、やみくもに機能を追加せず互換性を維持することに多大な注意が払われている。よって OSが標準で提供しているソフトウェアパッケージの種
the lightweight, modular, feature rich, blazing fast, open source Java REST framework a simple resource definition import myapp.domain.Message; @Component @RestxResource public class HelloResource { @GET("/message") public Message sayHello(String who) { return new Message().setMessage(String.format( "hello %s, it's %s", who, DateTime.now().toString("HH:mm:ss"))); } } a RESTX spec title: should say
mozaic.fm #7 RESTや#mozaicfm REST を聴いての感想、それから「Web+DB vol82のWebAPIデザインの鉄則」に触発されたので書こうと思う。 REST設計について WebAPIを設計するうえでRESTが重要であることは周知のとおりである。 “Constraints are liberating”「制約は自由をもたらす」 @t_wadaさんがおっしゃっているように、RESTを前提にすれば、「アーキテクチャとしてもそうだし、アプリケーションフレームワークも「適切な制約」を設けることで設計のコストが下がる」という大きなメリットが生まれる。 しかし、相変わらずリソース設計やらインターフェース設計やらで悩んでおられる方も多いと聞く。 その一方で個人的には適切なフレームワークを使えばREST設計で悩まなくてもよいはず(※3)という思いもある。 インターフェース設計な
18 August 2014 REST is a vast improvement over complex things like SOAP and CORBA, but I think we still have a way to go before we’ve reached simple. REST is an acronym for REpresentational State Transfer, and I think the “state” part of that acronym gives rise to a lot of incidental complexity as systems grow. You can think of state as a combination of value and time, and in the RESTful case, the
何が問題かというと RailsでJSON APIを定義する時、素のままでやろうとすると コントーラでto_jsonを呼んだり、モデルにas_jsonを定義したりすることになるかと思います。 モデルに書くとAPIによって出力内容を変えたい場合にとても苦労します。 API数が増えれば増えるほどモデルが複雑になっていきます。 APIレスポンスとしてのJSONはコントローラやモデルに書くべきでしょうか? ビューに書いた方が自然ではないでしょうか? とはいえ、他の画面用のビューのようにERBでJSONレスポンスを書くというのはないでしょう。 そこで、JSONのAPIレスポンスを表現することに特化したDSLライブラリのRABLが使えます。 http://nesquena.github.com/rabl/ https://github.com/nesquena/rabl http://engineeri
Data structure Rich data structure: KV, List, Hash, ZSet, Set. Various Backend Various backend databases to choose: LevelDB, goleveldb, LMDB, RocksDB, BoltDB or Memory. Expiration & TTL Supports expiration and ttl in all kinds of data structures. CLI Support Redis clients, like redis-cli, are supported directly. Easy Embedding Easy to embed in Go application. Data Protection Replication to guarant
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く