Beispiel für Scripted REST APIs – Skriptbeispiele

  • Freigeben Version: Australia
  • Aktualisiert 12. März 2026
  • 4 Minuten Lesedauer
  • Diese Beispiele zeigen, wie verschiedene Ressourcen-Skripts für eine geskriptete REST-API erstellt werden.

    Abfrageparameter RUFEN Beispiel AB

    Dieses Beispiel zeigt, wie Abfrageparameterwerte aus einer Anforderung abgerufen werden.

    /**
     * GET - Sample Request API - Query Params
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        var uri = request.uri;
        var url = request.url;
        var queryParams = request.queryParams;
        var customHeader = request.getHeader('X-Custom');
    
        return {
            "uri": uri,
            "url": url,
            "queryParams": queryParams,
            "customHeader": customHeader
        };
    
    })(request, response);

    Pfadparameter GET Beispiel

    Dieses Beispiel zeigt, wie Pfadparameterwerte aus einer Anforderung abgerufen werden.

    /**
     * GET - Sample Request API - Path Params
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        var uri = request.uri;
        var url = request.url;
        var path = request.pathParams;
    
        return {
            "uri": uri,
            "url": url,
            "path_params": path,
            "path.id": path.id
        };
    })(request, response);
    

    Skripteinbindung – Beispiel ABRUFEN

    Dieses Beispiel zeigt, wie eine Skripteinbindung verwendet wird, um eine Antwort bereitzustellen. Durch die Verwendung einer Skripteinbindung können Sie allgemeinen Code wiederverwenden und die Lesbarkeit in den REST-Service-Skripts beibehalten.

    /**
     * GET - Sample Request API - Script Include
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        var responseObj = global.SampleDataUtil.getSampleJSON();
        return responseObj;
    })(request, response);

    Beispiel für ZEICHENFOLGENPOST

    Dieses Beispiel zeigt, wie eine POST-Nachricht mit einem Zeichenfolgentext analysiert und eine Antwort basierend auf der Anforderung gesendet wird.

    /**
     *  POST - Sample Request API - dataString
     *  sample usage:
     *  var requestBody = request.body;
     *  var requestString = requestBody.dataString;
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        var requestBody = request.body;
        var requestString = requestBody.dataString;
        return {"requestString": requestString};
    })(request, response);

    Beispiel für BINÄRPOST

    Dieses Beispiel zeigt, wie eine POST-Nachricht mit einem binären Text analysiert und eine Antwort basierend auf der Anforderung gesendet wird.

    /**
     * POST - Sample Request API - Body
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        var body = request.body.data;
        //do any additional processing on the request body, such as inserting a new record.
        return {
            "body.id": body.id
        };
    })(request, response);

    Beispiel für nicht akzeptablen Fehler

    Dieses Beispiel zeigt, wie Sie mit einem nicht akzeptablen Fehler reagieren. Verwenden Sie diesen Fehlertyp, wenn der Headerwert für die Anforderungsannahme vom Webservice nicht unterstützt wird.

    /**
     * Sample Not Acceptable Error Sample
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        response.setError(new sn_ws_err.NotAcceptableError('sample error message'));
    })(request, response);

    Beispiel für fehlerhaften Anforderungsfehler

    Dieses Beispiel demonstriert, wie Sie auf einen Fehler bei einer ungültigen Anforderung reagieren. Verwenden Sie diesen Fehlertyp, um einen Fehler in der Anforderungssyntax anzugeben.

    /**
     * Bad Request Error Sample
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        response.setError(new sn_ws_err.BadRequestError('sample error message'));
    })(request, response);

    Beispiel für Konfliktfehler

    Dieses Beispiel demonstriert, wie Sie auf einen Konfliktfehler reagieren. Verwenden Sie diesen Fehlertyp im Falle mehrerer in Konflikt stehender Anforderungen, z. B. mehrerer Aktualisierungen desselben Datensatzes.

    /**
     * Error Response: Conflict Error Sample
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        response.setError(new sn_ws_err.ConflictError('sample error message'));
    })(request, response);

    Fehlerbeispiel „nicht gefunden“

    Dieses Beispiel zeigt, wie Sie mit einem Fehler „nicht gefunden“ reagieren. Verwenden Sie diesen Fehlertyp, wenn die angeforderte Ressource nicht vorhanden oder nicht verfügbar ist.

    /**
     * Error Response: Not Found Error Sample
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        response.setError(new sn_ws_err.NotFoundError('sample error message'));
    })(request, response);

    Beispiel für nicht unterstützten Medientypfehler

    Dieses Beispiel demonstriert, wie Sie bei einem nicht unterstützten Medientypfehler reagieren. Verwenden Sie diesen Fehlertyp, um anzugeben, dass der Inhaltstyp der Anforderung nicht unterstützt wird.

    /**
     * Error Response: Unsupported Media Type Error Sample
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        response.setError(new sn_ws_err.UnsupportedMediaTypeError('sample error message'));
    })(request, response);

    Beispiel für Servicefehler

    Dieses Beispiel zeigt, wie Sie mit einem generischen Servicefehler reagieren. Mit dem Objekt „ServiceError“ können Sie den Statuscode, die Meldung und das Fehlerdetail definieren. Verwenden Sie einen ServiceError, wenn die vordefinierten Fehlertypen nicht Ihren Anforderungen entsprechen.

    /**
     * Error Response: Custom Error Sample
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
        var myError = new sn_ws_err.ServiceError();
        myError.setStatus(418);
        myError.setMessage("I am a Teapot");
        myError.setDetail("Here are the details about this error");
        response.setError(myError);
    })(request, response);
    

    Beispiel für Funktionsklammern-Fehler

    Dieses Beispiel zeigt, dass eine Funktion, die nicht in Klammern eingeschlossen ist, zu einem Fehler führt. Klammern in alle Funktionen einschließen.

    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    	gs.info("message: {0}", request.body.data.message);
    })(request, response);
    
    function test() {
    	gs.info("test");
    }(request, response);

    Beispiel für Serialisierungsfehler

    Dieses Beispiel zeigt, dass die Anforderung, wenn sie als Text für die Antwort festgelegt ist, zu einem Serialisierungsfehler führen kann.

    setBody_request:
        response.setBody(request);

    Dieses Beispiel zeigt, dass, wenn die Antwort als Textkörper für die Antwort festgelegt ist, dies zu einem Serialisierungsfehler führen kann.

    setBody_response:
        response.setBody(response);

    Dieses Beispiel zeigt, dass die Anforderung, wenn sie zurückgegeben wird, zu einem Serialisierungsfehler führen kann.

    return_request:
        return request;

    Dieses Beispiel zeigt, dass die Rückgabe der Antwort zu einem Serialisierungsfehler führen kann.

    return_response:
        return response;

    Beispiel für geskriptetes REST-Ressourcenskript

    Dieses Beispiel für REST-API-Ressourcenskript analysiert nameUnd idWerte aus dem Anforderungstext und gibt diese Werte in der Antwort zurück.
    /**
     * POST - Sample Request API - Body
     */
    (function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
    var body = request.body.data,
    id0,name0,id1,name1;
    name0 = body[0].name; // 'user0'
    id0 = body[0].id; // '1234'
    name1 = body[1].name; // 'user1'
    id1 = body[1].id; // '5678'
    
    return {
    "id": id0,
    "name": name0,
    "id1": id1,
    "name1": name1
    };
    })(request, response);

    Anforderungen

    Die API kann sowohl XML- als auch JSON-Anforderungen akzeptieren.
    Tabelle : 1. Anforderungen
    JSON-Anforderung XML-Anforderung
    POST /api/sn_demo_api/v1/example/body HTTP/1.1
    Content-Type: application/json
    Accept: application/json
    Host: <instance>.service-now.com
    Connection: close
    Content-Length: 91
    
    [   
      { "name": "user0",
        "id": 1234
      },
      {
        "name": "user1",
        "id": 5678
      }
    ]
    POST /api/sn_demo_api/v1/example/body HTTP/1.1
    Content-Type: application/xml
    Accept: application/json
    Host: <instance>.service-now.com
    Connection: close
    Content-Length: 152
    
    <request><entry>
          <name>user0</name>
          <id>1234</id>
       </entry>
       <entry>
          <name>user1</name>
          <id>5678</id>
       </entry>
    </request>

    Antworten

    Beide Anforderungen geben Application/JSON als Akzeptanzheader-Wert an. Dies führt dazu, dass eine der Antworten eine JSON-Formatierung verwendet, auch wenn der Anforderungsinhaltstyp XML ist.
    HTTP/1.1 200 OK
    Content-Type: application/json;charset=UTF-8
    Transfer-Encoding: chunked
    Date: Tue, 04 Aug 2015 15:20:44 GMT
    Server: ServiceNow
    Connection: close
    Set-Cookie: BIGipServerpool_<Instance>=880838154.47166.0000; path=/
    
    {"result":{"id":1234,"id1":5678,"name":"user0","name1":"user1"}}