リクエストをすると、XMLでレスポンスが返ってきますが、私が必要としているのはJSONです。docでは、JSONを返すためには、次のように書かれています。Accept: application/json` HTTP Headerを使用してください。
Accept: application/json "を入れるためのHTTP Headerはどこにありますか?
私の推測では、それはURL-requestの中にはないと思われます。
http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00
推測通り、HTTPヘッダーはURLの一部ではありません。
ブラウザにURLを入力すると、リクエストは標準的なヘッダとともに発行されます。いずれにしても、REST APIは、ブラウザのアドレスバーにエンドポイントを入力して使用するものではありません。
最も一般的なシナリオは、サーバーがサードパーティのREST Apiを消費することです。
これを行うために、サーバーサイドのコードは、与えられたエンドポイント(URL)を指す適切なGET(/PUT/POST/DELETE)リクエストを 作成 し、(あなたのケースのように、必要に応じて)いくつかのヘッダーを設定し、最後に(たぶん)いくつかのデータを送信します(例えば、POSTリクエストで一般的に発生するように)。
リクエストを作成し、それを送信し、最後にレスポンスを取得するコードは、サーバーサイドの言語に依存します。
REST APIをテストしたい場合は、コマンドラインからcurl`ツールを使用することができます。
curl`はリクエストを行い、そのレスポンスを標準出力に出力します(特に指示がない限り)。
あなたのケースでは、テストリクエストは次のように発行されます。
$curl -H "Accept: application/json" 'http://localhost:8080/otp/routers/default/plan?fromPlace=52.5895,13.2836&toPlace=52.5461,13.3588&date=2017/04/04&time=12:00:00'
Hまたは
--header` ディレクティブは,ヘッダとその値を設定します.
ここに、test out your headersという便利なサイトがあります。ブラウザのヘッダを見たり、cURLを使って送信したヘッダを反映させたりすることができます。
例えば、このようにコンテンツ・ネゴシエーションを検証することができます。
この Accept
ヘッダーはプレーンテキストを好むので、そのフォーマットで返します:-。
$ curl -H "Accept: application/json;q=0.9,text/plain" http://gethttp.info/Accept
application/json;q=0.9,text/plain
一方、こちらのヘッダはJSONを好むため、そのフォーマットで返されます:-。
$ curl -H "Accept: application/json,text/*;q=0.99" http://gethttp.info/Accept
{
"Accept": "application/json,text/*;q=0.99"
}
Curlはjsonを表現するためのより良いオプションかもしれませんが、その場合、コマンドラインであるため、jsonの構造を理解するのは難しいでしょう。 jsonをブラウザで表示したい場合は、次のようなXMLアノテーションをすべて削除します。
@XmlRootElement(name="person")
@XmlAccessorType(XmlAccessType.NONE)
@XmlAttribute
@XmlElement
のようなXMLアノテーションをすべてモデルクラスから削除し、xml表現に使用したのと同じURLを実行します。
pom.xmlにjacson-databindの依存関係があることを確認してください。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.1</version>
</dependency>