JP2017033221A - Apiリクエスト処理装置、apiリクエスト処理方法およびapiリクエスト処理プログラム - Google Patents

Apiリクエスト処理装置、apiリクエスト処理方法およびapiリクエスト処理プログラム Download PDF

Info

Publication number
JP2017033221A
JP2017033221A JP2015151548A JP2015151548A JP2017033221A JP 2017033221 A JP2017033221 A JP 2017033221A JP 2015151548 A JP2015151548 A JP 2015151548A JP 2015151548 A JP2015151548 A JP 2015151548A JP 2017033221 A JP2017033221 A JP 2017033221A
Authority
JP
Japan
Prior art keywords
api
api request
request
redirect
character string
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015151548A
Other languages
English (en)
Inventor
健一 橿渕
Kenichi Kashibuchi
健一 橿渕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2015151548A priority Critical patent/JP2017033221A/ja
Publication of JP2017033221A publication Critical patent/JP2017033221A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

【課題】不完全なAPIリクエストによるアプリケーションの誤作動を防止すること。【解決手段】APIリクエスト処理装置10は、API利用装置30からのAPIリクエストを処理する。リダイレクト要求部12は、API利用装置30からAPIリクエストを受信した場合、APIリクエストに含まれるクエリ文字列の末尾に所定の追加文字列を追加したリダイレクトAPIリクエストを再送するようAPI利用装置30に要求する。完全性判定部14は、リダイレクトAPIリクエストを受信した場合、当該リダイレクトAPIリクエストに含まれるクエリ文字列の末尾に追加文字列が記載されているか否かに基づいて、リダイレクトAPIリクエストのデータ完全性を判定する。【選択図】図1

Description

本発明は、API利用装置からのAPIリクエストを処理する、APIリクエスト処理装置、APIリクエスト処理方法およびAPIリクエスト処理プログラムに関する。
従来、所定の機能をAPI(Application Programming Interface)を介してAPI利用装置(クライアント)に提供するAPI提供装置に関する技術が開発されている。
例えば、下記特許文献1は、アプリケーションサーバとAPIサーバとから構成されるWebシステムに関する技術であり、アプリケーションサーバによらずAPIサーバを再利用することを目的としている。
また、下記特許文献2は、API呼出し要求に応じて呼制御API又はメディア制御APIを提供するAPIゲートウェイ装置において、API利用者ごとに状態を管理して制限を加える認可制御を実現する技術であり、API利用者からのアクセスを適切に監視して規制することを目的としている。
特開2010−146169号公報 特開2010−288021号公報
API利用装置がAPIを実行する際、指定するクエリパラメータが多いと、APIリクエストの文字列が長くなる場合がある。この場合、API利用装置のアプリケーション実装状態によっては、アプリケーションで処理可能なAPIリクエストの最大データ長を超える部分の文字列が削除された状態でAPIリクエストが送信される可能性がある。
このような不完全なAPIリクエストは、API利用装置のユーザにとって想定外のAPIリクエストとなる可能性があり、API利用装置のアプリケーション等の誤動作につながる可能性がある。
上記従来技術では、このようなAPIリクエストの完全性についての考慮がなされておらず、改善の余地がある。
本発明は、このような事情に鑑みなされたものであり、その目的は、API利用装置からのAPIリクエストを処理する際に、不完全なAPIリクエストによるアプリケーションの誤作動を防止することができる、APIリクエスト処理装置、APIリクエスト処理方法およびAPIリクエスト処理プログラムを提供することにある。
上述の目的を達成するため、請求項1に記載の発明は、API利用装置からのAPIリクエストを処理するAPIリクエスト処理装置であって、前記API利用装置から前記APIリクエストを受信した場合、前記APIリクエストに含まれるクエリ文字列に所定の追加文字列を追加したリダイレクトAPIリクエストを再送するよう前記API利用装置に要求するリダイレクト要求部と、前記リダイレクトAPIリクエストを受信した場合、当該リダイレクトAPIリクエストに含まれる前記クエリ文字列に前記追加文字列が記載されているか否かに基づいて、前記リダイレクトAPIリクエストのデータ完全性を判定する完全性判定部と、を備えることを特徴とするAPIリクエスト処理装置とした。
請求項6に記載の発明は、API利用装置からのAPIリクエストを処理するAPIリクエスト処理装置のAPIリクエスト処理方法であって、前記APIリクエスト処理装置が、前記API利用装置から前記APIリクエストを受信した場合、前記APIリクエストに含まれるクエリ文字列に所定の追加文字列を追加したリダイレクトAPIリクエストを再送するよう前記API利用装置に要求するステップと、前記リダイレクトAPIリクエストを受信した場合、当該リダイレクトAPIリクエストに含まれる前記クエリ文字列に前記追加文字列が記載されているか否かに基づいて、前記リダイレクトAPIリクエストのデータ完全性を判定するステップと、を実行することを特徴とするAPIリクエスト処理方法とした。
請求項7に記載の発明は、API利用装置からのAPIリクエストを処理するコンピュータを、前記API利用装置から前記APIリクエストを受信した場合、前記APIリクエストに含まれるクエリ文字列に所定の追加文字列を追加したリダイレクトAPIリクエストを再送するよう前記API利用装置に要求するリダイレクト要求手段、前記リダイレクトAPIリクエストを受信した場合、当該リダイレクトAPIリクエストに含まれる前記クエリ文字列に前記追加文字列が記載されているか否かに基づいて、前記リダイレクトAPIリクエストのデータ完全性を判定する完全性判定手段、として機能させるためのAPIリクエスト処理プログラムとした。
このようにすることで、APIリクエストを処理する際にAPIリクエストのデータが完全な形で受信できているか否かを判定することができる。よって、API利用装置のユーザが意図しない不完全なAPIリクエストによる処理を実行することを防止し、APIリクエスト処理装置を介した処理の信頼性を向上させることができる。
請求項2に記載の発明は、前記リダイレクト要求部は、前記クエリ文字列の末尾に前記追加文字列を追加するよう要求し、前記完全性判定部は、前記クエリ文字列の末尾に前記追加文字列が記載されている場合には、前記リダイレクトAPIリクエストのデータ長が前記API利用装置で処理可能な前記APIリクエストの最大データ長以内であり、前記リダイレクトAPIリクエストのデータ完全性を保証できると判定し、前記クエリ文字列の末尾に前記追加文字列が記載されていない場合には、前記リダイレクトAPIリクエストのデータ長が前記最大データ長を超えており、前記リダイレクトAPIリクエストのデータ完全性を保証できないと判定する、ことを特徴とする請求項1に記載のAPIリクエスト処理装置とした。
このようにすることで、リダイレクトAPIリクエストにおける追加文字列の有無を判定するのみでリダイレクトAPIリクエストのデータ完全性を判定することができ、効率的に判定処理を実行することができる。
請求項3に記載の発明は、前記完全性判定部が前記リダイレクトAPIリクエストのデータ完全性を保証できないと判定した場合、前記API利用装置にエラー信号を送信するエラー信号生成部を更に備える、ことを特徴とする請求項1または請求項2に記載のAPIリクエスト処理装置とした。
このようにすることで、API利用装置においてAPIリクエストが完全でなかったことを認識することができる。よって、API利用装置は、APIリクエストの再送信等、意図するリクエストが正常に受領されるように対応することが可能となる。
請求項4に記載の発明は、前記完全性判定部が前記リダイレクトAPIリクエストのデータ完全性を保証できないと判定した場合、当該リダイレクトAPIリクエストのデータ長を最大データ長として検出する最大長検出部と、前記最大長検出部で検出された前記最大データ長を前記API利用装置の識別子とともに記憶する最大長記憶部と、を備え、前記リダイレクト要求部は、前記API利用装置の前記最大データ長が前記最大長記憶部に記憶された後、次回以降前記APIリクエストを受信した場合は、前記リダイレクトAPIリクエストの再送を要求せず、前記完全性判定部は、前記次回以降受信した前記APIリクエストのデータ長と前記最大長記憶部に記憶された前記最大データ長とを比較して当該APIリクエストのデータ完全性を判定する、ことを特徴とする請求項1から請求項3のいずれか1項に記載のAPIリクエスト処理装置とした。
このようにすることで、同一のAPI利用装置から次回以降APIリクエストを受信した場合は、リダイレクトAPIリクエストの再送を要求しないでAPIリクエストのデータ完全性を判定することができる。よって、APIリクエスト処理装置とAPI利用装置との間のネットワークトラフィックを低減させて、効率的にAPIリクエストを処理することができる。
請求項5に記載の発明は、前記リダイレクト要求部は、前記クエリ文字列の先頭にも所定の前記追加文字列を追加するよう要求し、前記API利用装置から前記APIリクエストを受信した場合、当該APIリクエストの前記クエリ文字列の先頭に前記追加文字列が記載されているか否かに基づいて、当該APIリクエストが前記リダイレクトAPIリクエストであるか否かを判定するリクエスト判定部を更に備える、ことを特徴とする請求項1から請求項4のいずれか1項に記載のAPIリクエスト処理装置とした。
このようにすることで、受信したAPIリクエストがリダイレクトされたものであるか否かを容易に判定することができ、効率的にAPIリクエストを処理することができる。
本発明によれば、API利用装置からのAPIリクエストを処理する際に、不完全なAPIリクエストによるアプリケーションの誤作動を防止する、APIリクエスト処理装置、APIリクエスト処理方法およびAPIリクエスト処理プログラムを提供することができる。
実施の形態にかかるAPIリクエスト処理装置の構成を示すブロック図である。 装置間で送受信されるリクエストおよびレスポンスの一例を示す説明図である。 設定記憶部に記憶された追加文字列の一例を示す説明図である。 最大長記憶部に記憶された最大データ長の一例を示す説明図である。 APIリクエスト処理装置におけるAPIリクエスト処理手順を示すフローチャートである。
(実施の形態)
以下に添付図面を参照して、本発明にかかるAPIリクエスト処理装置10、APIリクエスト処理方法およびAPIリクエスト処理プログラムの好適な実施の形態を詳細に説明する。
図1は、実施の形態にかかるAPIリクエスト処理装置10の構成を示すブロック図である。
APIリクエスト処理装置10は、API利用装置30から送信されたAPIリクエストを解析し、API利用装置30から要求されている処理を実行する後段装置32のAPIを決定し、後段装置32にAPIリクエストを送信する機能を有する。また、APIリクエスト処理装置10は、APIリクエストに対応して後段装置32から送信された出力データを中継し、API利用装置30に送信する。
なお、APIリクエスト処理装置10には、複数の後段装置10が接続されてもよく、その後段装置32に対応する機能部をAPIリクエスト処理装置10内に有していてもよい。
また、APIリクエスト処理装置10には、複数のAPI利用装置30が接続されていてもよい。この場合、複数のAPI利用装置30のそれぞれをAPI利用装置30の識別子(IPアドレス、APIサービスのクライアントID、APIキー等)により識別する。
APIリクエスト処理装置10は、リダイレクト要求部12、完全性判定部14、リクエスト判定部16、設定受付部18、設定記憶部20、最大長検出部22、最大長記憶部24、エラー信号生成部26、APIレスポンス処理部28を備える。
まず、各機能部の概要について説明する。
リダイレクト要求部12(リダイレクト要求手段)は、APIリクエストの送信元のAPI利用装置30に対するリダイレクト要求を生成し、APIレスポンス処理部28に送信処理を依頼する。
完全性判定部14(完全性判定手段)は、APIリクエストのデータ完全性を保証できるか否かを判定する。
リクエスト判定部16は、受信したAPIリクエストを、リダイレクト要求部12または完全性判定部14のいずれに引き渡すかを判定する。
設定受付部18は、キーボード等の入力デバイスである設定入力装置34とAPIリクエスト処理装置10とのインターフェースであり、設定入力装置34を介した文字列(後述する追加文字列)の入力を受け付ける。
設定記憶部20は、設定受付部18で受け付けた文字列(後述する追加文字列)を記憶する。
最大長検出部22は、API利用装置30で処理可能なAPIリクエストの最大データ長(URL最大長)を検出する。
最大長記憶部24は、最大長検出部22で検出された最大データ長をAPI利用装置30の識別子とともに記憶する。
エラー信号生成部26は、完全性判定部14からの依頼を受け、API利用装置30に送信するエラー信号を生成する。
APIレスポンス処理部28は、API利用装置30に対してAPIリクエスト処理装置10側からの応答データ(後段装置32の出力データを含む)を送信する。
つぎに、各機能部の詳細について説明する。
リダイレクト要求部12(リダイレクト要求手段)は、API利用装置30からAPIリクエストを受信した場合に、APIリクエストに含まれるクエリ文字列に所定の追加文字列を追加したリダイレクトAPIリクエストを再送するようAPI利用装置30に要求する。
本実施の形態では、リダイレクト要求部12は、クエリ文字列の前後にそれぞれ異なる追加文字列(先頭用追加文字列および末尾用追加文字列)を追加するよう要求する。
すなわち、リダイレクト要求部12は、APIリクエストのURLで指定されたクエリ文字列の前後に所定の追加文字列を追加したものを、新たなクエリ文字列として送信し直すよう要求するリダイレクト信号を生成する。
より詳細には、リダイレクト要求部12は、設定記憶部20に記憶されている追加文字列を読み出し、APIリクエスト中のクエリ文字列の前後に追加文字列を挿入して新たなクエリ文字列を生成する。そして、この新たなクエリ文字列を含むリダイレクトAPIリクエストの再送を要求するリダイレクト信号を生成する。
生成されたリダイレクト信号は、APIレスポンス処理部28によってAPI利用装置30に送信される。
図3は、設定記憶部20に記憶された追加文字列の一例を示す説明図である。
図3に示す追加文字列データベース1では、クエリ文字列の先頭に追加する先頭用追加文字列が「_begin」、クエリ文字列の末尾に追加する末尾用追加文字列が「_end」となっている。
先頭用追加文字列および末尾用追加文字列として指定する文字の配列は、通常APIで用いられるパラメータ等と重複しなければ、すなわち、先頭用追加文字列または末尾用追加文字列として他のパラメータと識別できる文字列であれば、特に制限はない。また、先頭用追加文字列と末尾用追加文字列とが同一の文字列であってもよい。
図2(a)に、API利用装置30のAPIリクエストの一例を示す。
図2(a)のAPIリクエストは、ホスト(Host):api.example.comに対して、API名:apiAを用いて、「?」以下に記載されているクエリパラメータで指定した条件を満たす情報を要求するものである。
1行目には、クエリパラメータが複数指定(param1、param100等)されている。HTTPのバージョンは1.1である。
このようなAPIリクエストのうち、「param1=aaa&(中略)&param100=zzz」までがクエリ文字列である。
図2(b)は、図2(a)のAPIリクエストに対するリダイレクト信号の一例である。
1行目にはAPIリクエストの再送信を要求するステータスコードが記載され、2行目に再送信時のURLが記載されている。
2行目のURLのクエリ文字列の先頭には先頭用追加文字列「_begin」が、末尾には末尾用追加文字列を「_end」が、それぞれ挿入されている。
図2(c)は、図2(b)のリダイレクト信号を受けてAPI利用装置30が再送したAPIリクエスト(以下、「リダイレクトAPIリクエスト」という)の一例である。
図2(c)のリダイレクトAPIリクエストには、クエリ文字列の先頭および末尾に先頭用追加文字列「_begin」および末尾用追加文字列を「_end」がそれぞれ含まれている。
リダイレクトAPIリクエストを受信した場合には、完全性判定部14で処理を行う。
なお、受信したAPIリクエストが通常の(追加文字列が追加されていない)APIリクエストであるか、リダイレクトAPIリクエストであるかは、リクエスト判定部16が判定する。
リクエスト判定部16は、API利用装置30からAPIリクエストを受信した場合、当該APIリクエストのクエリ文字列の先頭に追加文字列(先頭用追加文字列)が記載されているか否かに基づいて、当該APIリクエストがリダイレクトAPIリクエストであるか否かを判定する。
すなわち、リクエスト判定部16は、受信したAPIリクエストのクエリ文字列の先頭に先頭用追加文字列が記載されている場合にはリダイレクトAPIリクエストであると判定して、完全性判定部14に処理を依頼する。一方、クエリ文字列の先頭に先頭用追加文字列が記載されていない場合には通常のAPIリクエストであると判定して、リダイレクト要求部12に処理を依頼する。
完全性判定部14(完全性判定手段)は、リダイレクトAPIリクエストを受信した場合、当該リダイレクトAPIリクエストに含まれるクエリ文字列の末尾に追加文字列(末尾用追加文字列)が記載されているか否かに基づいて、APIリクエストのデータ完全性を判定する。
ここで、APIリクエストのデータ完全性とは、API利用装置30のユーザが意図した要求の内容(クエリ文字列等)が全てAPIリクエストに含まれているか否かである。
APIリクエストのデータ長(バイト数)は、主にクエリ文字列の長さによって変化するが、API利用装置30において処理可能なAPIリクエストの最大データ長(URL最大長)が決まっている場合、最大データ長を超える部分の文字列が削除されて不完全な形でAPIリクエストが送信される可能性がある。
完全性判定部14は、このようなデータ長の超過によってAPIリクエストが不完全な形となっていないかを監視する。
なお、APIリクエストのデータ長は、例えばAPIリクエストに含まれるホスト名、パス、クエリ文字列等の長さを合計したURL長をカウントする。
より詳細には、完全性判定部14は、リダイレクトAPIリクエストのクエリ文字列の末尾に追加文字列(末尾用追加文字列)が記載されている場合には、リダイレクトAPIリクエストのデータ長がAPI利用装置30で処理可能なAPIリクエストの最大データ長以内であり、リダイレクトAPIリクエストのデータ完全性を保証できると判定する。
また、クエリ文字列の末尾に追加文字列が記載されていない場合には、APIリクエストのデータ長が最大データ長を超えており、リダイレクトAPIリクエストのデータ完全性を保証できないと判定する。
完全性判定部14は、リダイレクトAPIリクエストのデータ完全性を保証できると判定した場合には、リダイレクトAPIリクエストで要求されているAPIを提供する後段装置32に対してリダイレクトAPIリクエストを転送する。
図2(d)は、後段装置32に対してリダイレクトAPIリクエストが転送された場合に、後段装置32が送信する提供データ(正常レスポンス)の一例である。
ヘッダ1行目はAPIリクエストの要求が成功したことを示し、ボディ部にリクエストに応じた情報が返される。
また、完全性判定部14は、リダイレクトAPIリクエストのデータ完全性を保証できないと判定した場合には、エラー信号生成部26にエラー信号の生成を依頼する。
エラー信号生成部26は、API利用装置30に送信するエラー信号を生成し、エラー信号をAPI利用装置30に送信するようAPIレスポンス処理部28に依頼する。
図2(e)は、エラー信号(エラーレスポンス)の一例である。
ヘッダ部の1行目はAPIリクエストが不正であることを示し、ボディ部にURLのデータ長が最大値を超えている旨のエラーメッセージが記載されている。
エラー信号を受信したAPI利用装置30は、例えば自装置で処理可能なAPIリクエストの最大データ長以内にAPIリクエストを変更し、再度APIリクエスト処理装置10に送信する。
また、完全性判定部14は、最大長検出部22にAPI利用装置30で処理可能なAPIリクエストの最大データ長の検出を依頼する。
最大長検出部22は、リダイレクトAPIリクエストのクエリ文字列の末尾に追加文字列が記載されているか否かを判断し、追加文字列が記載されていない場合(データ完全性が保証できない場合)には、当該リダイレクトAPIリクエストのデータ長を、API利用装置30で処理可能なAPIリクエストの最大データ長として検出する。
また、追加文字列が記載されている場合(データ完全性が保証できる場合)には、API利用装置30の最大データ長を「上限なし」と検出する。
最大長検出部22で検出された最大データ長は、API利用装置30の識別子とともに最大長記憶部24で記憶される。
図4は、最大長記憶部24に記憶された最大データ長の一例を示す説明図である。
図4の最大データ長データベース2は、API利用装置30の識別子種別、識別子値および最大データ長(URL最大長)を、それぞれ関連付けて記憶している。
識別子種別は、例えばIPアドレス、APIサービスのクライアントID、APIキー等である。
また、最大データ長は例えばAPIリクエストのバイト数で表現される。
なお、API利用装置30で稼働する複数のアプリケーションでそれぞれAPIを使用する場合、それぞれのアプリケーションで処理可能な最大データ長が異なる場合がある。この場合には、それぞれのアプリケーションに対して異なる識別子を付加して識別可能としてもよい。
最大長記憶部24を用いることによって、次回以降のAPIリクエスト送信時の処理を効率的に行うことができる。
例えば、API利用装置30からAPIリクエストを受信した場合、リクエスト判定部16は、当該API利用装置30の最大データ長が最大長記憶部24に記憶されているか否かを判定する。
最大データ長が最大長記憶部24に記憶されていない場合には、APIリクエストをリダイレクト要求部12に引き渡し、リダイレクト信号の送信を依頼する。
また、最大データ長が最大長記憶部24に記憶されている場合には、APIリクエストを完全性判定部14に引き渡し、データ完全性の判定を依頼する。完全性判定部14では、最大長記憶部24に記憶された最大データ長と今回受信したAPIリクエストのデータ長とを比較してデータ完全性を判定する。
すなわち、最大長記憶部24を設けた場合、リダイレクト要求部12は、API利用装置30の最大データ長が最大長記憶部24に記憶された後、次回以降にAPIリクエストを受信した場合、リダイレクトAPIリクエストの再送を要求しない。完全性判定部14は、次回以降に受信したAPIリクエストのデータ長と最大長記憶部24に記憶された最大データ長とを比較して当該APIリクエストのデータ完全性を判定することが可能となる。
これにより、次回以降のAPIリクエスト時のネットワークトラフィックを、初回のAPIリクエスト時と比較して半減させて、効率的にAPIリクエストを処理することができる。
図5は、APIリクエスト処理装置10におけるAPIリクエスト処理手順を示すフローチャートである。
APIリクエスト処理装置10は、まずAPIリクエストの受信に先立って、設定受付部18により追加文字列(先頭用追加文字列および末尾用追加文字列)の設定を受け付け、設定記憶部20に記憶しておく(ステップS500)。そして、APIリクエスト処理装置10は、APIリクエストを受信する度に、ステップS502以降の処理を実行する。
API利用装置30からAPIリクエストを受信すると(ステップS502)、リクエスト判定部16は、APIリクエストに含まれるAPI利用装置30の識別子を用いて最大長記憶部24のデータベース(図4の最大データ長データベース2)を参照し、当該API利用装置30の最大データ長が記憶されており、かつ、その最大データ長が「上限なし」以外のデータであるかを判断する(ステップS504)。
最大データ長が記憶されており、かつ、そのデータが「上限なし」以外である場合(ステップS504:Yes)、リクエスト判定部16は、APIリクエストを完全性判定部14に引き渡す。
完全性判定部14は、APIリクエストに含まれるホスト名、パス、クエリ文字列等の長さを合計したURL長を、APIリクエストのデータ長として算出する。そして、算出したAPIリクエストのデータ長が最大長記憶部24に記憶された最大データ長を超えているか否かを判断する(ステップS506)。
APIリクエストのデータ長が最大データ長を超えている場合(ステップS506:Yes)、完全性判定部14はAPIリクエストのデータ完全性を保証できないと判断し、エラー信号生成部26にエラー信号の生成を依頼する。エラー信号生成部26は、API利用装置30宛のエラー信号を生成し、APIレスポンス処理部28を介してエラー信号をAPI利用装置30に送信して(ステップS508)、本フローチャートによる処理を終了する。
一方、APIリクエストのデータ長が最大データ長を超えていない場合(ステップS506:No)、完全性判定部14はAPIリクエストのデータ完全性を保証できると判断し、後段装置32にAPIリクエストを送信して(ステップS510)、本フローチャートによる処理を終了する。
また、ステップS504において、最大データ長が記憶されていない場合、または、最大データ長のデータが「上限なし」の場合には(ステップS504:No)、リクエスト判定部16は、設定記憶部20から先頭用追加文字列を読み出し、APIリクエストのクエリ文字列の先頭に先頭用追加文字列が記載されているか否かを判断する(ステップS512)。
先頭用追加文字列が含まれていない場合(ステップS512:No)、リクエスト判定部16は、本APIリクエストがリダイレクトAPIリクエストではないと判定し、APIリクエストをリダイレクト要求部12に引き渡す。
リダイレクト要求部12は、設定記憶部20(図3の追加文字列データベース1)に記憶されている追加文字列を読み出し、クエリ文字列の前後に追加文字列を挿入したリダイレクトAPIリクエストの再送を要求するリダイレクト信号を生成し、APIレスポンス処理部28を介してAPI利用装置30に送信して(ステップS514)、本フローチャートによる処理を終了する。
一方、ステップS512で先頭用追加文字列が含まれている場合(ステップS512:Yes)、リクエスト判定部16は、本APIリクエストがリダイレクトAPIリクエストであると判定し、リダイレクトAPIリクエストを完全性判定部14に引き渡す。
完全性判定部14は、設定記憶部20から末尾用追加文字列を読み出し、リダイレクトAPIリクエストのクエリ文字列の末尾に、末尾用追加文字列が記載されているか否かを判断する(ステップS516)。
末尾用追加文字列が記載されている場合(ステップS516:Yes)、完全性判定部14は、リダイレクトAPIリクエストのデータ完全性を保証できると判定し、後段装置32にAPIリクエストを送信する(ステップS518)。
また、最大長検出部22は、今回のAPIリクエストの送信元であるAPI利用装置30の最大データ長を「上限なし」と検出し、当該API利用装置30の識別情報とともに最大長記憶部24(図4の最大データ長データベース2)に記憶して(ステップS520)、本フローチャートによる処理を終了する。
また、ステップS516で末尾用追加文字列が記載されていない場合(ステップS516:No)、完全性判定部14は、リダイレクトAPIリクエストのデータ完全性を保証できないと判定し、エラー信号生成部26にエラー信号の生成を依頼する。エラー信号生成部26は、API利用装置30宛のエラー信号の生成し、APIレスポンス処理部28を介してエラー信号をAPI利用装置30に送信する(ステップS522)。
また、最大長検出部22は、今回のリダイレクトAPIリクエストに含まれるホスト名、パス、クエリ文字列等の長さを合計し、その合計値をAPI利用装置30で処理可能なAPIリクエストの最大データ長として検出する。そして、API利用装置30の識別情報と最大データ長とを関連付けて最大長記憶部24(図4の最大データ長データベース2)に記憶して(ステップS524)、本フローチャートによる処理を終了する。
以上説明したように、実施の形態にかかるAPIリクエスト処理装置10は、APIリクエストを受信した際に、APIリクエストに含まれるクエリ文字列の末尾に追加文字列を追加してリダイレクトするように要求するので、APIリクエストを処理する際にAPIリクエストのデータが完全な形で受信できているか否かを判定することができる。よって、API利用装置30のユーザが意図しない不完全なAPIリクエストによる処理を実行することを防止し、APIリクエスト処理装置10を介した処理の信頼性を向上させることができる。
また、APIリクエスト処理装置10は、リダイレクトAPIリクエストのクエリ文字列の末尾に追加文字列が記載されているか否かを判定するのみでリダイレクトAPIリクエストのデータ完全性を判定することができ、効率的に判定処理を実行することができる。
また、APIリクエスト処理装置10は、APIリクエストのデータ完全性が保証されていない場合に、API利用装置30にエラー信号を送信するので、API利用装置30においてAPIリクエストが完全でなかったことを認識することができ、API利用装置30は、APIリクエストの再送信等、意図するリクエストが正常に受領されるように対応することが可能となる。
また、APIリクエスト処理装置10は、API利用装置30ごとの最大データ長を記憶しておくので、同一のAPI利用装置30から次回以降APIリクエストを受信した場合は、リダイレクトAPIリクエストの再送を要求しないでAPIリクエストのデータ完全性を判定することができ、APIリクエスト処理装置10とAPI利用装置30との間のネットワークトラフィックを低減させて、効率的にAPIリクエストを処理することができる。
また、APIリクエスト処理装置10は、クエリ文字列の先頭にも追加文字列を追加するよう要求し、当該先頭の追加文字列を用いて受信したAPIリクエストがリダイレクトAPIリクエストであるか否かを判定するので、APIリクエストがリダイレクトされたものであるか否かを容易に判定することができ、効率的にAPIリクエストを処理することができる。
1 追加文字列データベース
2 最大データ長データベース
10 APIリクエスト処理装置
12 リダイレクト要求部(リダイレクト要求手段)
14 完全性判定部(完全性判定手段)
16 リクエスト判定部
18 設定受付部
20 設定記憶部
22 最大長検出部
24 最大長記憶部
26 エラー信号生成部
28 APIレスポンス処理部
30 API利用装置
32 後段装置
34 設定入力装置

Claims (7)

  1. API利用装置からのAPIリクエストを処理するAPIリクエスト処理装置であって、
    前記API利用装置から前記APIリクエストを受信した場合、前記APIリクエストに含まれるクエリ文字列に所定の追加文字列を追加したリダイレクトAPIリクエストを再送するよう前記API利用装置に要求するリダイレクト要求部と、
    前記リダイレクトAPIリクエストを受信した場合、当該リダイレクトAPIリクエストに含まれる前記クエリ文字列に前記追加文字列が記載されているか否かに基づいて、前記リダイレクトAPIリクエストのデータ完全性を判定する完全性判定部と、
    を備えることを特徴とするAPIリクエスト処理装置。
  2. 前記リダイレクト要求部は、前記クエリ文字列の末尾に前記追加文字列を追加するよう要求し、
    前記完全性判定部は、前記クエリ文字列の末尾に前記追加文字列が記載されている場合には、前記リダイレクトAPIリクエストのデータ長が前記API利用装置で処理可能な前記APIリクエストの最大データ長以内であり、前記リダイレクトAPIリクエストのデータ完全性を保証できると判定し、前記クエリ文字列の末尾に前記追加文字列が記載されていない場合には、前記リダイレクトAPIリクエストのデータ長が前記最大データ長を超えており、前記リダイレクトAPIリクエストのデータ完全性を保証できないと判定する、
    ことを特徴とする請求項1に記載のAPIリクエスト処理装置。
  3. 前記完全性判定部が前記リダイレクトAPIリクエストのデータ完全性を保証できないと判定した場合、前記API利用装置にエラー信号を送信するエラー信号生成部を更に備える、
    ことを特徴とする請求項1または請求項2に記載のAPIリクエスト処理装置。
  4. 前記完全性判定部が前記リダイレクトAPIリクエストのデータ完全性を保証できない判定した場合、当該リダイレクトAPIリクエストのデータ長を最大データ長として検出する最大長検出部と、
    前記最大長検出部で検出された前記最大データ長を前記API利用装置の識別子とともに記憶する最大長記憶部と、を備え、
    前記リダイレクト要求部は、前記API利用装置の前記最大データ長が前記最大長記憶部に記憶された後、次回以降前記APIリクエストを受信した場合は、前記リダイレクトAPIリクエストの再送を要求せず、
    前記完全性判定部は、前記次回以降受信した前記APIリクエストのデータ長と前記最大長記憶部に記憶された前記最大データ長とを比較して当該APIリクエストのデータ完全性を判定する、
    ことを特徴とする請求項1から請求項3のいずれか1項に記載のAPIリクエスト処理装置。
  5. 前記リダイレクト要求部は、前記クエリ文字列の先頭にも前記追加文字列を追加するよう要求し、
    前記API利用装置から前記APIリクエストを受信した場合、当該APIリクエストの前記クエリ文字列の先頭に前記追加文字列が記載されているか否かに基づいて、当該APIリクエストが前記リダイレクトAPIリクエストであるか否かを判定するリクエスト判定部を更に備える、
    ことを特徴とする請求項1から請求項4のいずれか1に項記載のAPIリクエスト処理装置。
  6. API利用装置からのAPIリクエストを処理するAPIリクエスト処理装置のAPIリクエスト処理方法であって、
    前記APIリクエスト処理装置は、
    前記API利用装置から前記APIリクエストを受信した場合、前記APIリクエストに含まれるクエリ文字列に所定の追加文字列を追加したリダイレクトAPIリクエストを再送するよう前記API利用装置に要求するステップと、
    前記リダイレクトAPIリクエストを受信した場合、当該リダイレクトAPIリクエストに含まれる前記クエリ文字列に前記追加文字列が記載されているか否かに基づいて、前記リダイレクトAPIリクエストのデータ完全性を判定するステップと、
    を実行することを特徴とするAPIリクエスト処理方法。
  7. API利用装置からのAPIリクエストを処理するコンピュータを、
    前記API利用装置から前記APIリクエストを受信した場合、前記APIリクエストに含まれるクエリ文字列に所定の追加文字列を追加したリダイレクトAPIリクエストを再送するよう前記API利用装置に要求するリダイレクト要求手段、
    前記リダイレクトAPIリクエストを受信した場合、当該リダイレクトAPIリクエストに含まれる前記クエリ文字列に前記追加文字列が記載されているか否かに基づいて、前記リダイレクトAPIリクエストのデータ完全性を判定する完全性判定手段、
    として機能させるためのAPIリクエスト処理プログラム。
JP2015151548A 2015-07-31 2015-07-31 Apiリクエスト処理装置、apiリクエスト処理方法およびapiリクエスト処理プログラム Pending JP2017033221A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015151548A JP2017033221A (ja) 2015-07-31 2015-07-31 Apiリクエスト処理装置、apiリクエスト処理方法およびapiリクエスト処理プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015151548A JP2017033221A (ja) 2015-07-31 2015-07-31 Apiリクエスト処理装置、apiリクエスト処理方法およびapiリクエスト処理プログラム

Publications (1)

Publication Number Publication Date
JP2017033221A true JP2017033221A (ja) 2017-02-09

Family

ID=57988909

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015151548A Pending JP2017033221A (ja) 2015-07-31 2015-07-31 Apiリクエスト処理装置、apiリクエスト処理方法およびapiリクエスト処理プログラム

Country Status (1)

Country Link
JP (1) JP2017033221A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11429688B2 (en) 2020-03-19 2022-08-30 International Business Machines Corporation Correcting a URL within a REST API call
JP2022157254A (ja) * 2021-03-31 2022-10-14 エヌ・ティ・ティ・コミュニケーションズ株式会社 分析装置、分析方法及び分析プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11429688B2 (en) 2020-03-19 2022-08-30 International Business Machines Corporation Correcting a URL within a REST API call
JP2022157254A (ja) * 2021-03-31 2022-10-14 エヌ・ティ・ティ・コミュニケーションズ株式会社 分析装置、分析方法及び分析プログラム
JP7157200B1 (ja) 2021-03-31 2022-10-19 エヌ・ティ・ティ・コミュニケーションズ株式会社 分析装置、分析方法及び分析プログラム

Similar Documents

Publication Publication Date Title
US7702917B2 (en) Data transfer using hyper-text transfer protocol (HTTP) query strings
US9471646B2 (en) Method and server device for exchanging information items with a plurality of client entities
US20090262724A1 (en) Proxy server, communication system, communication method and program
KR101201140B1 (ko) 요구-응답 전송 프로토콜들에 의한 신뢰성 있는 단방향메시징
JP2017529793A5 (ja)
JP6279938B2 (ja) 接続管理装置、通信システム、接続管理方法およびプログラム
KR20140009931A (ko) 컨텐츠 이름 기반의 컨텐츠 중심 네트워크에서 컨텐츠 및 실시간 스트리밍 컨텐츠 제공을 위한 컨텐츠 요청자 및 컨텐츠 제공자의 통신 방법
WO2012034518A1 (zh) 一种提供包含网页地址的消息的方法和系统
CN112383612B (zh) 一种文件传输方法、装置、设备及可读存储介质
JP2017033221A (ja) Apiリクエスト処理装置、apiリクエスト処理方法およびapiリクエスト処理プログラム
US10554723B2 (en) HTTP server, method for controlling the same, and image forming apparatus
CN109039687A (zh) 请求的负载均衡方法、装置、系统、设备以及存储介质
CN109120385B (zh) 一种基于数据传输系统的数据传输方法、装置及系统
Bhattacharyya et al. Constrained application protocol (CoAP) option for no server response
JP2020091512A (ja) 社内ネットワーク上の社内サーバに対する操作を伴う業務プロセスを自動化するための装置、方法及びそのためのプログラム
JP5383923B1 (ja) 情報処理装置、情報処理システム、情報処理方法およびプログラム
WO2015100932A1 (zh) 一种网络数据的传输方法、装置及系统
JP4536029B2 (ja) 通信プロトコルを用いた相互接続方法および装置
JP6131710B2 (ja) 通信システム、負荷分散装置、および、負荷分散プログラム
JP2007299019A (ja) データ通信システム、サーバ装置及びそれに用いるデータ通信方法並びにそのプログラム
EP3408989B1 (en) Detecting malware on spdy connections
CN109155792B (zh) 更新以内容为中心的网络中的传输栈
JP2011044823A (ja) 通信装置、通信システム、通信方法及び通信プログラム
JP5726720B2 (ja) Web情報取得方法および先読み代理サーバ
JP6667341B2 (ja) ネットワークシステム