我正在使用此代码通过使用内置的Domino DAS服务提供商ExtLib,从特定视图或单个文档创建自己的REST服务来获取文档。
package no.kjeilen.das.services;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibm.domino.services.ServiceEngine;
import com.ibm.domino.services.rest.das.document.RestDocumentJsonService;
import com.ibm.domino.services.rest.das.document.impl.DefaultDocumentParameters;
import com.ibm.domino.services.rest.das.view.RestViewJsonService;
import com.ibm.domino.services.rest.das.view.impl.DefaultViewParameters;
public class ArticlesViewService implements com.ibm.xsp.extlib.services.servlet.ServiceFactory{
public ServiceEngine createEngine(HttpServletRequest httpRequest,
HttpServletResponse httpResponse) throws ServletException {
String pathinfo = httpRequest.getPathInfo();
String action = pathinfo.substring(pathinfo.lastIndexOf("/")+1);
if(action.equals("all")){
DefaultViewParameters p = new DefaultViewParameters();
p.setViewName("articlesAll");
p.setGlobalValues(DefaultViewParameters.GLOBAL_ALL);
p.setSystemColumns(DefaultViewParameters.SYSCOL_ALL);
p.setDefaultColumns(true);
p.setStart(0);
p.setCount(Integer.MAX_VALUE);
return new RestViewJsonService(httpRequest, httpResponse, p);
}else{
DefaultDocumentParameters p = new DefaultDocumentParameters();
p.setSystemItems(DefaultDocumentParameters.SYS_ITEM_ALL);
p.setGlobalValues(DefaultDocumentParameters.GLOBAL_ALL);
p.setDefaultItems(true);
p.setDocumentUnid(action);
return new RestDocumentJsonService(httpRequest,httpResponse,p);
}
}
}
然后我有这个类来处理servlet路由:
package no.kjeilen.das.services;
import com.ibm.xsp.extlib.services.servlet.DefaultServiceFactory;
import com.ibm.xsp.extlib.services.servlet.DefaultServletFactory;
import com.ibm.xsp.extlib.services.servlet.ServiceFactory;
public class DASServletFactory extends DefaultServletFactory {
private static ServiceFactory createFactory() {
DefaultServiceFactory factory = new DefaultServiceFactory();
factory.addFactory("artikler", new ArticlesViewService() );
return factory;
}
public DASServletFactory() {
super("services", "Extension Library Services Servlet", createFactory());
}
}
这允许我调用:http:// {server} / {db} / xsp / services / artikler / all来通过DAS获取视图中的所有条目,或者我可以调用:http:// {server} / {db} / xsp / services / artikler / {docUNID}通过DAS获取特定文档。
但是,我如何使用/扩展此方法还包括对POST / PATCH / DELETE的支持?
我似乎无法找到任何相关的例子......
非常感谢任何信息/提示/代码!
亲切的问候, Petter Kjeilen
答案 0 :(得分:0)
如果您使用的是自定义REST服务,则可以将调用放入doPOST,doPUT,doDELETE。我认为你需要在PATCH上使用doPUT。
获取所需文档的UNID这是一个示例,在SSJS中授予它而不是像您正在使用的Java那样,但是我在事件中编码时,您应该能够输入您的方法。
这有帮助吗?
干杯, 布赖恩