由于大学的任务,我在网络系统中执行API。问题是,我无法做一个特定的部分,我认为这很容易。
声明说:
* GET / rest / api / v1 / tfg?State = $ {state}
指示状态下所有TFG的列表。您可以同时指示不同的状态。要做到这一点,你必须多次重复state参数(例如:"?State = state1& State = state2& State = state3"),web服务将返回所有的任何人这些州。*
我有一个带项目的数据库(TFG),我知道如何获取这些数据,但问题是我不知道如何检测?在URL中,如何根据数量读取不同的参数。可能有一个州或N个州。我该怎么办?
目前的代码是:
@Path("/rest/api/v1/tfg")
public class TfgREST {
@GET
@Path("")
@Produces(MediaType.APPLICATION_JSON)
public Response findAll() throws ServletException, IOException {
TfgDao dao = new TfgDao();
LinkedList<Projecte> llista = dao.findAll(true); //TRUE because of API
JsonArrayBuilder array = Json.createArrayBuilder();
for(Projecte p : llista){
array.add(p.getTitol());
}
return Response.ok(array.build()).build();
}
@GET
@Path("/?state={state}")
@Produces(MediaType.APPLICATION_JSON)
public Response findByState(@PathParam("state") String state) throws ServletException, IOException {
TfgDao dao = new TfgDao();
LinkedList<String> llista = dao.findByState(state);
//JsonObjectBuilder jo = Json.createObjectBuilder();
JsonArrayBuilder array = Json.createArrayBuilder();
for(String p : llista){
array.add(p);
}
return Response.ok(array.build()).build();
}
如果我打电话给http://...../rest/api/v1/tfg?State=XXXX,网络会调用第一个(findAll),但是,如果我使用/ rest / api / v1 / tfg / State = XXX,它会有效...
谢谢大家!我在等你的回答。
米克尔
答案 0 :(得分:0)
因为REST API遵循资源。
如果“state”是一个对象,你可以使用 / rest / api / v1 / tfg / State = XXX 但是如果“州”只是 tfg 的属性,您使用/ rest / api / v1 / tfg?State = XXX
答案 1 :(得分:0)
好的伙计们,现在它正在运作。我发布了解决方案,以便为您做出贡献,并尝试在未来为其他人解决此问题。
我在一个实现if。
的方法中混合了两种方法代码如下:
@Path("/rest/api/v1/tfg")
public class TfgREST {
@GET
@Path("")
@Produces(MediaType.APPLICATION_JSON)
public Response findAll(@QueryParam("state") List<String> state) throws ServletException, IOException {
TfgDao dao = new TfgDao();
JsonArrayBuilder array = Json.createArrayBuilder();
if(state.isEmpty()){
LinkedList<Projecte> llista = dao.findAll(true); //TRUE because of API
for(Projecte p : llista){
array.add(p.getTitol());
}
}
else{
LinkedList<String> projs;
for (String s : state){
projs = dao.findByState(s);
for (String x : projs){
array.add(x);
}
}
}
return Response.ok(array.build()).build();
}
}
感谢您的贡献,我终于明白了,而且非常简单!