質問編集履歴

1 修正

takenyaan

takenyaan score 119

2016/01/18 12:40  投稿

Ajaxにて配列をGETパラメータで引き渡す方法、及びサーバサイドでのパース処理について
RESTfulなWEBアプリケーションを構築しています。
現在、クライアントサイド(HTML5 + JavaScript)から、サーバサイド(Java Spark Framework)のAPIをHTTPメソッドGETでキックする必要があり、その際の配列データの受け渡しで困っています。
通常Ajaxのdataパラメータを利用することと思いますが、下記のように配列を含めた場合、
GETパラメータは`indexName[]=hoge1&indexName[]=hoge2&indexName[]=hoge3`のようにキー名に`[]`が
GETパラメータは`array[]=hoge1&indexName[]=hoge2&indexName[]=hoge3`のようにキー名に`[]`が
付与される形で渡されることになるかと思います。
```
var req = {"indexName": ["hoge1", "hoge2", "hoge3"]}
var req = {"array": ["hoge1", "hoge2", "hoge3"]}
function() {
   $.ajax({
       url: xxxxxxxxxx,
       type: "GET",
       dataType: "json",
       data: req
   }).done(function(res) {
   }).fail(function(res) {
});
```
一方で下記の記事のように、カンマ区切りの文字列で渡す方法もあるのかなと思います。
http://javatechnology.net/ajax/json-parameter-array/
```
var req = {"indexName": "hoge1, hoge2, hoge3"}
var req = {"array": "hoge1, hoge2, hoge3"}
function() {
   $.ajax({
       url: xxxxxxxxxx,
       type: "GET",
       dataType: "json",
       data: req
   }).done(function(res) {
   }).fail(function(res) {
});
```
いずれもサーバサイドのパース処理次第でどうにでもなるのかなと思いますが、
クエリパラメータの仕様として階層構造を持ったデータの渡し方が定められているのでしょうか?
クライアントもサーバもオレオレ仕様でやり取りしているだけでしょうか?
RESTFulなAPIを設計した場合、このようにGETで階層構造を持つデータをやり取りする際に、
煩雑だなと感じています。(全てPOSTもありなのではないかと。)
これは蛇足ですが、もしご存知でしたら
サーバサイド(Java)のクエリパラメータのパース処理ライブラリがあればご教示ください。
  • Java

    22181 questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • JavaScript

    31744 questions

    JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

  • jQuery

    11928 questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

  • Ajax

    1960 questions

    Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る