SOAPとREST
##参考URL
・Webサービス Web APIのまとめ
http://skill-note.net/post-666/
・今さら聞けないWebAPIの実装方式RESTとSOAPの違い
https://qiita.com/pink/items/f1a22840619d3b79c4f2
・SOAP と REST の違い
http://freed411.doorblog.jp/archives/30018661.html
##REST
REpresentational State Transferの略。
ネットワーク上のコンテンツ(リソース)を一意なURLで表すのが基本。
各リソース(URL)に対してGET,POST,PUT,DELETEでリクエストを送信しレスポンスをXMLやjsonなどで受け取る形式
⇒レスポンスのフォーマット形式は指定されていないが、XMLが利用されることは少なく、ほぼjson
RESTはURLがリソースに対応づけられるためURLは名詞的になることが多い。
また、Webブラウザで容易に動作確認ができることが最大の特徴、メリットで、わざわざテスト用アプリを作る必要がない。
デメリットとしては、リクエストがURLにパラメータを追加する形となるため、パラメータの数に比例してURLが長くなる危険性がある。
###RESTの定義
・WADL(あまり使用されていない)(Spring MVCでは対応していない)
https://tc.hatenablog.com/entry/2015/01/24/134040
###RESTの設計原則
・アドレス指定可能なURIで公開されていること
・インターフェース(HTTPメソッドの利用)の統一がされていること
・ステートレスであること
・処理結果がHTTPステータスコードで通知されること
###参考URL
・REST入門 基礎知識
https://qiita.com/TakahiRoyte/items/949f4e88caecb02119aa
・REST APIとは? – API設計のポイント!
http://wp.tech-style.info/archives/683
・0からREST APIについて調べてみた
https://qiita.com/masato44gm/items/dffb8281536ad321fb08
・REST、Web サービス、そして RESTful なサービス
https://www.ibm.com/developerworks/jp/webservices/library/ws-RESTservices/index.html
##SOAP
SimpleObject Access Protocolの略。
リクエストおよびレスポンスともにXMLフォーマットのデータで行う形式。
SOAPのURLは操作と対応づけられるため、URLの命名が動詞的になることが多い。
###実装方法について
・クラスのインターフェース定義から WSDL を生成 = ボトムアップ
.NETの開発に多いが、Javaでも増えてきている
・java2wsdl
・disco
・WSDL インターフェース記述からクラス・スケルトンを生成 = トップダウン
Javaの開発はおもにこちら
・wsdl2java
・wsimport
・wsdl
###参考URL
・正しい知識としてのSOAP
https://qiita.com/Urushibara01/items/f19a9489c08313b9fdde
・Spring WS(WebService)でSOAPリクエストを受け取るための設定
https://qiita.com/mugi_uno/items/42bbc2bdd6af5bbf3f36
#SOAP、REST双方を使用する開発
##開発の順序
1.XMLデータ構造の定義決定
2.SOAPのみが使用するWSDLの作成
スキーマやWSDLを記述するのは大変だが、特定のツールへの依存を回避やメンテナンス性の確保のため、自動生成に頼らない方が確実
★SOAPを作成すれば自動的にRESTにも対応してくれるミドルウエアもある。
(Axis2, .net Framework等)
3.RESTの入出力サンプルの作成
##参考URL
・3.8 Web 2.0時代のWebServices ~SOAP/REST使い分けの指針
http://xmlconsortium.org/wg/web2.0/teigensho/4--REST-SOAP.html
#ソースコードとWSDL
##ソースコードからWSDLの作成
###eclipseからWSDLの自動生成⇒java2wsdlコマンドを使用する
以下の手順でWSDLを作成すると、eclipse上でWebサービス・エクスプローラを使用してUnitTestを実施可能
1.作成したjavaファイルをeclipseのプロジェクトエクスプローラ上で右クリック
2.Webサービス>Webサービスの作成
3.ボトムアップでJavaプロキシのWebサービスを作成
###参考URL
・WSDL自動生成
https://bayside.hatenablog.com/entry/20051025/p1
・いまさら聞けない「Webサービス」の常識 (3/4)-【3】EclipseでJavaクラスからWSDL、Webサービスのインターフェイス実装コードを自動生成
https://www.atmarkit.co.jp/ait/articles/1002/26/news094_3.html
##WSDLからソースコードの作成
###参考URL
・WSDL ファイルからの JAX-WS クライアントの開発
https://www.ibm.com/support/knowledgecenter/ja/SS7K4U_8.5.5/com.ibm.websphere.zseries.doc/ae/twbs_jaxwsclientfromwsdl.html
・[Java] Axis2を使いWSDLからWEBサービスとクライアントを作成
http://d.hatena.ne.jp/modalblue/20080817/1218971413
#SOAPUIを使用したUnitTest
SOAPUIではSOAP、REST問わずユニットテストの実行が可能
★参考になりそうなサンプル★(Java,Spring Boot,JSONデータ取得のREST方式で実装)
・REST・SOAP・(MQ) テストツール SoapUI を使ってみた
https://www.project-respite.com/soapui-starter/
##RESTでのテスト手順
1.作成したJavaProjectのimport
2.project.xmlの読み込み
3.取り込んだプロジェクトを開き、「モック作成」を選ぶ
4.返却アクションから「POST」を選択
5.ダイアログボックスにレスポンスのリソースパスとその内容を記述する
6.レスポンスエディタを開き、ステータスコードとそのレスポンスの内容を設定する
★デメリット
RESTのレスポンスはxml形式ではないため、SoapUIからテストケースごとに一つ一つレスポンスを設定する必要がある。
事前に返却結果となるjsonを用意しておくことはできるが、xml形式のように
xmlを作る→貼り付ける→実行する
とテンポよく進められなさそう。
###参考URL
・Getting Started with REST Testing in SoapUI
https://www.soapui.org/rest-testing/getting-started.html
##参考URL
・SOAP UI
https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/PD+Professional/page/SOAP+UI
・[Soap UI]Webサービスのテストツール
http://skill-note.net/post-202/
・RESTのMockテストにSoapUIを使うには
http://begirama.hatenablog.com/entry/2013/03/07/021638
・SOAP UIのMock Serviceを使った効率的なWebサービスのテスト
http://begirama.hatenablog.com/entry/20120709/1341820969
・SOAP UIのTestSuite機能を使ったWebサービスのテスト自動化
http://begirama.hatenablog.com/entry/2012/07/31/162202
・SoapUIを使った通信処理のテスト(送信先サーバをモックする)
https://seri.hatenablog.com/entry/2015/05/13/175312
・soapUIを用いたWSS(WebServiceServer)テスト
https://www.brainsellers.com/blog/inastream/2010/10/soapuiwsswebserviceserver.html
・RESTful Mocking Overview
https://www.soapui.org/rest-testing-mocking/service-mocking-overview.html
#WAS7とsoap
アノテーションによって大幅に単純化
WebSphere Application Server V7 の JAX-WS 実装では、★SOAP 1.2★をサポート
##参考URL
・WebSphere Application Server V7 の新機能
https://www.ibm.com/developerworks/jp/websphere/library/was/was7_new/
#その他参考
・統合開発環境でWebサービスを作る
https://www.atmarkit.co.jp/ait/articles/0305/21/news003_4.html
・Websphereのweb.xml
https://blog.goo.ne.jp/nokonoko2006/e/35348798f511976290a668bd0b077039