私は REST Web サービスの初心者なので、REST API について簡単な質問をしたいと思います。次のメソッドを使用して、REST 経由でデータを提供する Java アプリケーションを作成しました。
@RequestMapping(value = "/JSON/ReceiveData/{metricOne}/{metricTwo}")
public @ResponseBody
String getData(@RequestParam("callback") String callback, @PathVariable String metricType,
@PathVariable String metricPeriod) {
LinkedHashMap<String,String> map = new LinkedHashMap<String, String>();
try{
map = service.getData(metricOne, metricTwo);
}catch(NullPointerException e){
e.printStackTrace();
}
return callback+"("+t2JsonUtil.toJsonString(map)+")";
}
クライアント アプリケーションが JSON オブジェクトを取得して LinkedHashMap に逆シリアル化するために、次のメソッドを作成しました。
public LinkedHashMap getDataClient(String metricOne, String metricTwo) {
LinkedHashMap<String,String> map = null;
try {
URL url = new URL("http://localhost:8081/Metrics/Stats/JSON/ReceiveData/"+metricOne+"/"+metricTwo+"/?callback=");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("Accept", "application/json");
BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));
String output = br.readLine();
output = output.substring(1,output.length()-1);
JsonFactory factory = new JsonFactory();
ObjectMapper mapper = new ObjectMapper(factory);
TypeReference<LinkedHashMap<String,String>> typeRef= new TypeReference<LinkedHashMap<String,String>>() {};
map = mapper.readValue(output, typeRef);
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return map;
}
このサービスをさまざまな言語のアプリケーションに提供するために API を作成したい場合、正確にはどうすればよいですか? getDataClient に含まれる URL を提供するだけですか? 私は非常に混乱しています。誰かがこれについて説明(または小さな例)を教えてくれれば、とても感謝しています。ありがとう!