2015-05-18 4 views
0

Я использую этот код для создания моей собственной службы REST для получения документов из специального вида или одного документа с помощью встроенных в Domino DAS сервисов ExtLib.Как использовать RestDocumentJsonService с POST/PATCH/DELETE?

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); 

     }  
    } 
} 

Я тогда этот класс для обработки маршрутизации сервлета:

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: // {сервер}/{дБ}/XSP/услуги/artikler/все чтобы получить все записи в представлении через DAS или я могу позвонить: http: // {server}/{db}/xsp/services/artikler/{docUNID}, чтобы получить специальный документ через DAS.

Но, как я могу использовать/расширить этот подход, чтобы также включить поддержку POST/PATCH/DELETE?

Я не могу найти примеры на этот счет ..

Любая информация/советы/код будет весьма признателен!

С наилучшими пожеланиями, Petter Kjeilen

ответ

0

Если вы используете сервис пользовательских REST, вы можете поставить вызов в doPOST, doPUT, doDELETE. Я думаю, вам нужно будет использовать doPUT через PATCH.

Вы можете получить UNID документа, который вы хотите с помощью метода здесь http://www.bleedyellow.com/blogs/DominoHerald/entry/get_the_unid_for_custom_rest_service_toget_method?lang=en_us

Вот образец, предоставленного это в SSJS не Java, как вы используете, но где я кодирование в случае, вам должен быть в состоянии применить ваш метод.

Помогает ли это?

Cheers, Brian

Смежные вопросы