由于我是REST Web服务的新手,我想问一些关于REST API的简单方法。我创建了一个Java应用程序,它通过REST使用以下方法提供数据:
@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)+")";
}
我为客户端应用程序创建了以下方法,以获取和反序列化到LinkedHashMap中的JSON对象:
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即可?我很迷茫。如果有人可以给我一个关于此的解释(或一个小例子),我将非常感激。谢谢!
答案 0 :(得分:3)
如果我想创建一个API以便提供此服务 不同语言的应用,我该怎么做?
Web服务的主要目的之一是允许异构(不同技术)系统之间的通信。 REST服务基于HTTP协议构建,因此任何支持HTTP通信的客户端技术都可以使用您的REST服务。
只提供getDataClient中包含的URL?
URL用于标识每个实体,但您可能必须提供其他信息,例如:输入参数详细信息,所需标头等。最好编写一个小规范或REST API使用指南,以帮助客户轻松无缝地使用您的服务。