REST stub file overview

The stub file acts as a proxy to the web service, making it easy to use a web service in your client app.

The fglrestful tool can generate a stub file (.4gl) for access by a Genero Web Services (GWS) client application for any REST Web service supporting the OpenAPI specification. It creates functions in Genero BDL that perform requests and return responses and data from the web service. The functions in the client stub implement the standard low-level API HTTP classes of the com package of the GWS.

The stub file defines data types for the input and output records matching those generated on the server side. In your web service client app, you create calls to the stub file functions to perform operations on the resources of the web service.

Reference records

You will find details for the parameters and return values to use with functions from the OpenAPI description (see Generate service description on demand ) or from the generated functions in the stub file.

In your client app, you must import the stub file using an IMPORT FGL statement. It is recommended that you reference types using their fully-qualified names in case the same name exists in different modules.

Using stub files

This example shows how data types and functions defined for a web service created with Genero BDL are generated in the stub file and called by the client accessing the web service.

Study this example to learn how to use the stub file in your Genero client application.

Server (myService)

# Module with the web service operations

PUBLIC TYPE recType RECORD
     idtype SMALLINT,
     nametype STRING
 END RECORD

PUBLIC FUNCTION echoRec(
     in recType)
     ATTRIBUTES(WSPost, WSPath = "/testTypeRec", WSRetCode = "202:Accepted")
     RETURNS(recType)
     DEFINE OUT recType
 
     LET OUT = in
     RETURN out.*
 END FUNCTION

Stub file (ws_stub)

# The stub file with code generated by fglrestful from the web service (myService)

# components/schemas/recType
 PUBLIC TYPE recType RECORD
     idtype INTEGER,
     nametype STRING
 END RECORD

PUBLIC FUNCTION echoRec(
    p_body recType)
    RETURNS(INTEGER, recType)
 
    # ... function code generated by fglrestful tool

 END FUNCTION

Client

# The MAIN module for the client
# Imports the stub file ws_stub generated from web service using fglrestful

IMPORT FGL ws_stub

DEFINE wsstatus STRING

MAIN
   CALL test()
END MAIN

# Function performs call to the stub function 
FUNCTION test()
     DEFINE in, out ws_stub.recType
 
     LET in.idtype = 1
     LET in.nametype = "test STRING"
 
     CALL ws_stub.echoRec(in) RETURNING wsstatus, out
      
     CASE wsstatus
        # C_SUCCESS is a constant defined in the ws_stub
       WHEN ws_stub.C_SUCCESS
         DISPLAY SFMT("Success status:  %1", wsstatus)
       OTHERWISE
         DISPLAY SFMT(" Internal error: %1", wsstatus)
     END CASE
END FUNCTION