33
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SOAP通信をREST化した話

33
Last updated at Posted at 2025-12-06

常駐している現場にて、SOAP(※1)で実装されていた通信処理を
REST(※2)に置き換える対応を行ったので、備忘録として、そして同様の対応をこれから
行おうとされている方のために書き残します...

(※1): Simple Object Access Protocol
Webサービス間でXML形式のデータを交換するためのプロトコル(通信規約)
利便性は高いが、処理や構造が複雑で扱いにくいところがある。

(※2): Representational State Transfer
HTTPベースでリクエストに対して、レスポンスをXMLやJSON形式で返す為の基本的な仕組み
SOAPよりも構造が単純で、扱いやすい。

対応前

「基幹システム」は、バッチ処理がメインのサーバー
「中継サーバー」経由で他社ネットワークへの通信が許可されている状態
image.png

基幹システム側にはWSDL(※3)という定義体ファイルがあり、
そのファイルを読み込んで、中継サーバーのどのサービスのどのメソッドを呼び出すのかを判断していた。
下記の図であれば、中継サーバーのGetXXXDataServiceメソッドを実行し、
「他シスDB」のデータ取得結果をXML形式で返す。
(※3) : Web Services Description Language(WSDL)
Web上のAPIを呼び出す為の設定記述
この記述がまぁ複雑で、これを読み込んで通信を行う記述もホンマに複雑

image.png

REST化

行った対応内容

【基盤システム】
① 基幹システムのWSDLファイルと、SOAPリクエストの記述部分を削除
② 中継サーバーにHTTPリクエスト(POST)を投げる処理を記述
 リクエスト内容は下記

http://(中継サーバーのIPアドレス):8080/Controller/GetXXXDataController

【中継サーバー】
基幹システムからのリクエストを受け付け、他シスDBデータを
XMLに編集して返すコントローラ(API)を新規作成
image.png

以上の対応を行い、データ取得結果の新旧比較テストを経て、
無事リリースとなりました。

おわりに

SOAP : 定義体(WSDL)に処理内容が事細かに記述されていて、堅牢な通信を実現

REST : 処理が単純になり、カスタマイズも楽に行えるが、SOAPの定義体で賄っていた処理を独自に実装してあげないといけない。

33
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?