Exemplo de REST API com script - amostras de script

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 5 min. de leitura
  • Esses exemplos demonstram como criar vários scripts de recursos para uma REST API com script.

    OBTER exemplo de parâmetros de consulta

    Este exemplo demonstra como obter valores de parâmetro de consulta de uma solicitação.

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

    OBTER exemplo de parâmetros de caminho

    Este exemplo demonstra como obter valores de parâmetro de caminho de uma solicitação.

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

    Exemplo GET DE inclusão de script

    Este exemplo demonstra como usar uma inclusão de script para fornecer uma resposta. Ao usar uma inclusão de script, você pode reutilizar código comum e manter a legibilidade nos scripts de serviço REST.

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

    Exemplo de POST DE cadeia de caracteres

    Este exemplo demonstra como analisar uma mensagem POST com um corpo de cadeia de caracteres e enviar uma resposta com base na solicitação.

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

    Exemplo DE POST binário

    Este exemplo demonstra como analisar uma mensagem POST com um corpo binário e enviar uma resposta com base na solicitação.

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

    Exemplo de erro não aceitável

    Este exemplo demonstra como responder com um erro não aceitável. Use este tipo de erro quando o valor do cabeçalho de aceitação de solicitação não for compatível com o serviço web.

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

    Exemplo de erro de solicitação incorreta

    Este exemplo demonstra como responder com um erro de solicitação incorreta. Use este tipo de erro para indicar um erro na sintaxe da solicitação.

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

    Exemplo de erro de conflito

    Este exemplo demonstra como responder com um erro de conflito. Use este tipo de erro no caso de várias solicitações conflitantes, como várias atualizações no mesmo registro.

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

    Exemplo de erro não encontrado

    Este exemplo demonstra como responder com um erro não encontrado. Use este tipo de erro se o recurso solicitado não existir ou estiver indisponível.

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

    Exemplo de erro de tipo de mídia incompatível

    Este exemplo demonstra como responder com um erro de tipo de mídia incompatível. Use este tipo de erro para indicar que o Content-Type da solicitação não é compatível.

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

    Exemplo de erro de serviço

    Este exemplo demonstra como responder com um erro de serviço genérico. O objeto ServiceError permite definir o código de status, a mensagem e os detalhes do erro. Use um ServiceError se os tipos de erro predefinidos não atenderem às suas necessidades.

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

    Exemplo de erro de parênteses de função

    Este exemplo demonstra que se uma função não for encapsulada entre parênteses, isso resultará em um erro. Incluir parênteses com todas as funções.

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

    Exemplo de erro de serialização

    Este exemplo demonstra que se a solicitação for definida como um corpo para a resposta, isso poderá resultar em um erro de serialização.

    setBody_request:
        response.setBody(request);

    Este exemplo demonstra que se a resposta for definida como um corpo para a resposta, isso poderá resultar em um erro de serialização.

    setBody_response:
        response.setBody(response);

    Este exemplo demonstra que, se a solicitação for retornada, poderá resultar em um erro de serialização.

    return_request:
        return request;

    Este exemplo demonstra que, se a resposta for retornada, poderá resultar em um erro de serialização.

    return_response:
        return response;

    Exemplo de script de recurso REST com script

    Este script de recurso de REST API de amostra analisa o. namee. idvalores do corpo da solicitação e retorna esses valores na resposta.
    /**
     * 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);

    Solicitações

    A API pode aceitar solicitações XML e JSON.
    Tabela 1. Solicitações
    Solicitação JSON Solicitação XML
    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>

    Respostas

    Ambas as solicitações especificam application/json como o valor do cabeçalho Aceitar. Qualquer resposta usará formatação JSON, mesmo se o tipo de conteúdo da solicitação for XML.
    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"}}