APIの定義を書く:Excel仕様書はもういやだ RESTful APIを提供するサーバと、そのAPIを利用するクライアント(たとえばSPA)とを並行で開発しようとするとき、まずAPIを定義して、それに基づいてサーバ/クライアント双方の実装を進めようと考えるのは自然だと思う。 そうと決まれば、「API仕様書_20190110.xlsx」と題するファイルを新規作成し、シート別にリソース毎の定義を書き始め・・・てはいけない。せっかくAPIを定義したドキュメントを作成するなら、するのなら、ソースコードの自動生成などの恩恵も受けたい。受けられるはずだ。 少しググってみる。どうやらSwaggerというものを使えばいいらしい。Swaggerに興味を持ったタイミングで、ちょうど書店に平積みになっていた『WEB+DB PRESS Vol.108』の表紙が目に入った。そこには、「スキーマ駆動Web API開
元々はC#、最近はNode.jsがコーディングの主流だったのですが、仕事で久々にJavaを使うことになりました。Javaは10年以上前にJava AppletからJNIでPCの周辺機器を操作するようなものを作って以来です。ServletとかTomcatとかStrutsとかとは無縁に生きてきました。 というわけで、久々にJavaを使って見たら、Spring 3.0~ にRestTemplateとかいう余りに素敵なクラスがあって驚いて鼻血が出たので、驚きを記事にしてみました。 RestTemplateの何がすごいかというと、Rest APIを呼び出すのに1行だけで済んでしまうという点です。これまでなら、HttpConnectionをOpenして、そこからBufferedWriterで書き出して、ResponseをBufferedReaderで読み込んで、みたいなことをしていましたが、そんな複雑
今回は、SpringのRestTemplateを使って外部のWeb API(REST API)にアクセスするようなコンポーネントに対するJUnitテストケースの書き方を紹介します。単体テストでは、Mockitoなどのモック化フレームワークを使って依存コンポーネントの振る舞いを変えることも多いと思いますが、今回は、Spring Testが提供しているMockRestServiceServerを使います。 動作検証環境 Spring Framework 4.3.0.BUILD-SNAPSHOT (2016/6/4時点) Spring Boot 1.4.0.BUILD-SNAPSHOT (2016/6/4時点) RestTemplateって何者!? MockRestServiceServerが何者か説明する前に、RestTemplateが何者でどんな仕組みでWeb APIにアクセスしているか説明
Spring Boot を勉強し始めて、いろいろ楽しいので、いったんここにまとめてみます。 ここで書いている内容は、下記のリポジトリで試している内容になります。(今後もいろいろ試すので、リポジトリの内容はどんどん変わっていくかもしれません…) onozaty/spring-boot-sandbox またSpring projectでも、たくさんのサンプルが公開されていてとても参考になります。 https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples Spring Bootを使うと、さまざまなコンポーネントを組み合わせて、よい感じのアプリケーション構成に仕上げてくれます。ちょっとうまく言い表せないのですが、、いろいろなコンポーネントを組み合わせて、結果的にフルスタックのフレームワークのような機
Spring BootでTestRestTemplateを試してみたメモです。 TestRestTemplate httpクライアントとしてRestTemplateがあります。 TestRestTemplateはRestTemplateのテスト用のクラスで、ベーシック認証のサポートなどテスト用に便利になっているようです。 Spring Boot1.4からRestTemplateを継承しなくなったようです。 http通信はデフォルトではJava標準のHttpURLConnectionが使われるようです。 今回テストのRESTクライアントとして使ってみます。 TestRestTemplate (Spring Boot Docs 1.5.3.RELEASE API) テスト対象クラス テスト対象のcontrollerとして下記のクラスを用意しました。 GET、POST、PUT、DELETEを受け
HAL - Hypertext Application Language A lean hypermedia type Author: Mike Kelly <[email protected]> Created: 2011-06-13 Updated: 2013-09-18 (Updated) Summary HAL is a simple format that gives a consistent and easy way to hyperlink between resources in your API. Adopting HAL will make your API explorable, and its documentation easily discoverable from within the API itself. In short, it will make yo
Spring Data RESTを試してみたメモです。 JSUGでSpring Data RESTというものを知ったので少し触ってみました。 https://www.slideshare.net/makingx/spring-boot-tips Spring Data REST Maven dependency テスト用クラス CRUD トップレベル POST GET PUT PATCH DELETE カスタムクエリ Configration basePath defaultPageSize maxPageSize pageParamName/limitParamName/sortParamName returnBodyOnCreate returnBodyOnUpdate その他の設定 @JsonIgnore REST URLの変更 Hiding methods Spring Data
はじめに Spring Data RESTを使って、MySQLにアクセスする最も簡単なREST APIを作成します。 参考 Accessing JPA Data with REST https://spring.io/guides/gs/accessing-data-rest/ 前提条件 下の記事の後の状態を前提にしています Spring BootとAngularUI UI-Routerを使ってみる MySQLを利用できること 環境 JVM: 1.8.0_45 (Oracle Corporation 25.45-b02) OS: Mac OS X 10.11.3 x86_64 MySQL: Server version: 5.5.28 Source distribution Spring Tool Suite Version: 3.7.3.RELEASE Build Id: 2016022
Swaggerを使ってAPI定義をしてスタブを動かしてみます。 Swaggerの関連ツールは様々な言語に対応していますが、ここではNode.jsを使って試してみます。 Swaggerとはなんぞ? Swaggerは関連ツールが多くあるので全容がつかみにくいのですが、 What is Swagger? The goal of Swagger™ is to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network
背景 最近は変化し続ける要件に対応するために、システムも柔軟であることが求められています。 そのため、部分的に変更やスケールの可能なシステムを構築し、API経由で連携するマイクロサービス的アーキテクチャが増えてきています。 そういった設計の中で問題になっていくのが、従来のモノリシックなアプリケーションではIDEやコンパイラなどで行っていた、機能間のインターフェイスをどう管理するかという部分です。 Swaggerとは? SwaggerとはRESTful APIのドキュメントや、サーバ、クライアントコード、エディタ、またそれらを扱うための仕様などを提供するフレームワークです。 公式サイトでは、The World's Most Popular Framework for APIsと謳っています。 その理由は、マイクロソフト、Google、IBM、SmartBearなどを大手の企業を含む「Open
Swagger places API specifications such as OpenAPI, AsyncAPI, and JSON Schema at the core of its architecture, which are crucial for guiding teams through the entire lifecycle of API design and documentation. This strategic focus ensures that our suite, including open source tools and API Hub, delivers unparalleled efficiency and a seamless user experience. Explore the API Specifications Discover t
デジタルビジネス時代を迎え、API連携へのニーズがこれまで以上に高まっている現在、API仕様を管理するOSSフレームワーク「Swagger」(スワッガー)が大きな注目を浴びています。本連載では、同フレームワークの未経験者・初心者を対象に、その概要や基本的な使い方を解説していきます。 仕様と実装の乖離が許されないAPI システム開発のトレンドとして、マイクロサービス化が進んできています。モノリス(一枚岩)スタイルの開発に比べて、アプリケーションの単位は小さくなり、多くのサービスが構築されます。 Uberの配車ビジネスやAirbnbの民泊に代表されるデジタルビジネスにおいても、APIエコノミー化が進んできており、Google Map APIやTwitter APIなどさまざまなAPIを組み合わせて素早くシステムを構築します。 Programmable Webでは、2017年1月時点で16,59
はじめに Wicketを使用したアプリに対してJMeterでテストをしようとした場合、避けて通りにくいのが、JMeterの「正規表現抽出」です。 なんとなく使っていたのですが、どうにも細部に謎があったので、調査しました。 正規表現抽出とは何なのかと言いますと、以下の画像の機能です。 環境 JMeter 2.3.4 謎1 JMeterの正規表現は何のルールに則っているのか? Javaの正規表現のリファレンスを見ながら書くと、たまに不思議な挙動になることがありまして、不思議に思っておりました。 ソースを見てやっと気づいたのですが、どうやらPerl5の正規表現互換だったようです。 以下にorg.apache.jmeter.functions.RegexFunctionのimport部分の一部を引用します。 import org.apache.oro.text.regex.MatchResult;
<html> <head></head> <body> <select name="name1" > <option value="010000">メンズファッション</option> <option value="015000">レディースファッション</option> <option value="500000">靴</option> <option value="670001">腕時計</option> <option value="980001">食品</option> <option value="999999">家電</option> </select> </body> </html> 参照名:selectname 正規表現:<(.*) value="(.*)"> テンプレート:$1$ 一致番号:0 この指定で取得できた内容がJMeterの変数のいかに格納されている。 sele
前置き 前回のエントリーの続きになります。 JMeterのインストールや基本的な使い方は前回のエントリーを見てください。 JMeterを使ってRailsアプリの負荷テストをやりたい 準備編 http://qiita.com/t_cyrill/items/f2236b010a6b4ff04b9e authenticity_tokenを取り出す RailsのアプリはCSRFを防止するため、authenticity_tokenという名前のトークンを発行するため、Apache BenchなどのツールでPOSTのテストを行うのは難しいのですが、JMeterには正規表現にマッチする文字を一時変数のような形で保持できる機能があるので、少し設定するだけで負荷テストが行えるようになります。 前置きはこれくらいにして、早速authenticity_tokenを取り出して、RailsアプリがPOSTをうまく処理
どうも、開発2部でサーバ担当してる山本です。 今回も前回に引き続きJMeter(ジェイメーター)についての投稿です。 前回は変数周りの機能について紹介しましたが、 今回はサーバーから返却されたjsonの内容を後続のリクエストで利用する方法を紹介します。 ▼全記事はこちら【JMeter講座③(全3回)】 【JMeter講座①(全3回)】カウンタ/Random Variable/CSV Data Set Config 【JMeter講座②(全3回)】正規表現抽出/BeanShell PostProcessor 【JMeter講座③(全3回)】BeanShell PreProcessor jsonからデータを取得する方法はいくつか方法はありますが、 今回は以下の2つの方法を紹介します。 正規表現抽出 BeanShell PostProcessor 尚、サーバを以下のjsonを返却するようにしてい
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く