【发布时间】:2013-04-08 17:20:34
【问题描述】:
我已经开发了 REST 服务,但现在我意识到我做错了什么。
例如,我有一项服务可以检索有关特定设备的信息。每个设备都有一个地址:sector.room.group.id。
我为这个 GET 方法做的 URI 是:(...)/services_devices/{sector}/{room}/{group}/{id} 但现在我意识到我不应该使用'/' 来分隔设备地址,对吧?
我应该如何将地址传递给这个方法?使用';' ?
我的 GET 方法是:
@GET
@Path("{sector}/{room}/{group}/{id}")
@Produces("application/json")
public String getDeviceName(@PathParam("sector") int sector, @PathParam("room") int room, @PathParam("group") int group, @PathParam("id") int id) throws Exception
{
String name = null;
try {
name = new DevicesManager().getDeviceName(sector, room, group, id);
} catch (Exception e) {
e.printStackTrace();
}
return name;
}
有一个简单的方法来改变这个,有一个正确的 URI?我在很多方法中都有这个“错误”。
【问题讨论】:
-
如果您只是将您的 URI 更改为 /services_devices/{address} 并开始接受您指定格式的地址,即 /services_devices/sector.room.group.id 怎么办?
-
嗯,你说得对!我需要解析这些字段,但我认为没有问题..
-
id 在您的应用程序中是唯一的,还是仅在指定组中唯一?换句话说,如果你只提供/services_devices/id,你能查到扇区、房间和组吗?
-
是的。例如,1.1.10.1 表示设备,1.1.21.1 表示不同的设备。
-
我的建议是,弃用这个 API 和新的 API,或者用正确的方法向这个 API 添加新版本。
标签: java rest uri restful-architecture