2016-07-30 6 views
1

Ich kann nicht herausfinden, wie Antwortcode in meinem REST-Steuerelement festgelegt wird.Antwortcode in Ruhesteuerung einstellen

enter image description here

Hier ist der Code der REST-Kontrolle.

<xe:restService id="restProfile" pathInfo="profile"> 
    <xe:this.service> 
     <xe:customRestService 
      doGet="#{javascript:REST_PROFILE.doGet()}" 
      contentType="application/json" 
      doPost="#{javascript:REST_PROFILE.doPost(reqVar)}" 
      requestContentType="application/json" requestVar="reqVar"> 
     </xe:customRestService> 
    </xe:this.service> 
</xe:restService> 

Die Anforderung ist, Code 404 in einigen Fällen zurückzugeben, und ich kann nicht herausfinden, wie es geht.

Weiß jemand, wie man es mit SSJS macht?

Version von Domino ist 9.0.1

Antwort

4

Sie keinen Status 404 mit doGet und doPost zurückkehren kann. Der Status der Antworteigenschaft wird vom customRestService verwaltet. Der SSJS-Code kann nur JSON-Daten zurückgeben.
Sie könnten Ihre eigene JSON Inhalte wie

{ 
    "status": "error", 
    "error-message": "something not found" 
} 

obwohl und behandeln Fehler auf diese Weise definieren.

Als Alternative können Sie serviceBean von customRestService verwenden.

 <xe:customRestService 
      contentType="application/json" 
      requestContentType="application/json" 
      serviceBean="de.leonso.demo.RestService"> 
     </xe:customRestService> 

und setzen Rückgabecode mit response.setStatus(status) dort:

public class RestService extends CustomServiceBean { 
    @Override 
    public void renderService(CustomService service, RestServiceEngine engine) throws ServiceException { 
     try { 
      HttpServletRequest request = engine.getHttpRequest(); 
      HttpServletResponse response = engine.getHttpResponse(); 
      response.setHeader("Content-Type", "application/json; charset=UTF-8"); 
      response.setContentType("application/json"); 
      response.setHeader("Cache-Control", "no-cache"); 
      response.setCharacterEncoding("utf-8"); 

      String method = request.getMethod(); 
      int status = 200; 
      if (method.equals("GET")) { 
       status = ... 
      } else { 
       ... 
      } 
      response.setStatus(status); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      throw new RuntimeException(e); 
     } 
    } 
+0

Dank @Knut. Ich werde es als eine Antwort akzeptieren, da es "eins in eins" ist, was ich vermutete. –

Verwandte Themen