fglrestful

The fglrestful tool produces REST web services stub files for client programs using an OpenAPI specification.

Syntax

fglrestful [ options ] service
  1. options are described in fglrestful options.
  2. service is the OpenApi service definition file or URL.

Options

Table 1. fglrestful Options
Options Description
-V or --version Displays version information.
-h or --help Displays options for the tool.
-l or --list { path | resource } List all the paths or resources of a service. See List path or resource.
-o or --output filename Specify a name for the output stub file. See Usage.
-n or --name resource In a service providing access to one or more resources, specify the creation of a stub file for a given resource. See Generate stub file for resource.
-p or --prefix prefix Set a prefix for constants and variables.
-b or --binary { byte | file } Specify that binary types are generated as either BYTE or FILE types in the stub.
-f or --format { XML | JSON } Specify the preferred REST format (XML or JSON).
-a or --oauth { yes | no | openapi } Generates OAuth support, default is openapi.
--ignore-restrictions Ignore JSON schema restrictions for data types: VARCHAR(N), DECIMAL(P,S), and DATETIME types.
--datetime-fraction { 1 | 2 | 3 | 4 |5 } Specify DATETIME fraction qualifier. The default is NULL, meaning YEAR TO SECOND. If value is between 1 and 5, fglrestful generates YEAR TO FRACTION(N) where N is the value provided.
-t or --token token Specify the access token value if the service is protected by an access token.
-k or --tokenfile filename Specify the access token file if the service is protected by an access token.
--comment Add comments to the generated stub file. See Output comments.
-W or --Warnings { yes | no } Specify if warnings should be output or not. By default the option value is yes, meaning the warnings are reported. See Output warnings.

Usage

You use the fglrestful tool to generate the GWS client stub from an OpenAPI specification file (JSON format).

For example, to access a Web service, you must get the REST information from the service provider. If the server supports the OpenAPI specification, the fglrestful command can generate the description of the service for access by a GWS client application.

If your REST service is written with Genero REST high-level API, a specification file is provided by default when you launch the service with the query string ?openapi.json. If the GWS Server was started on your local machine, for example, the OpenAPI information would be at:

http://localhost:8090/MyService?openapi.json

If your REST Web service uses versioning and contains different versions of operations, you request the OpenAPI information for a given version with a query string &version=version-name in the URI;

http://localhost:8090/MyService?openapi.json&version=v2

If the requested version does not exist, the 404 error will be returned.

You can generate the stub file from the OpenAPI specification in a command with the --output or -o option and the URL of the running service:
fglrestful -o stub_filename http://localhost:8090/MyService?openapi.json
If you access the OpenAPI information on the browser, you can copy the description to a file and save the file with an openapi extension, for example, myservice.openapi. In the sample command you generate the stub from the file:
fglrestful -o stub_filename myservice.openapi
Note: In Genero Studio, you can place the openapi file in your project and the stub file is generated from it when you compile the file. For more information, see the Genero Studio documentation.

The generated client stub file, stub_filename, has a .4gl extension.

The fglrestful command line tool supports OpenApi version 3.

For usage options, run the command fglrestful without any other parameters or with the help ( -h ) option.

These are examples of common commands used by REST Web service developers.

List path or resource

The --list { path | resource } option provides you with the option to list all the paths or resources of a service. For example, you can use a command to list the resources of the Web service in the standard output:
  • using the URL of the running service:
    fglrestful -l resource http://localhost:8090/MyService?openapi.json
  • or using a specification file:
    fglrestful -l resource myservice.openapi

Generate stub file for resource

Your REST Web service may provide services for one or more resources. You can specify the creation of a stub file for a given resource with the -n option in the command. For example, these commands generate a separate stub file for the "users" resource:
  • using the URL of the running service:
    fglrestful -n users -o myUsersStub http://localhost:8090/MyService?openapi.json
  • or using a specification file:
    fglrestful -n users -o myUsersStub myservice.openapi

Generate stub file for a version

Your REST Web service may use versioning and it contains different versions of operations. You can specify the creation of a stub file for a given version with a query string &version=version-name in the command. For example, these commands generate a separate stub file for the "v2" version:
  • using the URL of the running service:
    Note: The URL must be enclosed in quotes.
    fglrestful -o myVersion2Stub "http://localhost:8090/MyService?openapi.json&version=v2"
  • or using an OpenAPI documentation file that contains the version 2 operations only:
    fglrestful -o myV2Stub myserviceV2.openapi

Output comments

When you specify the option --comment in the command, descriptions set on the WSDescription attribute on parameters of a REST function are generated on the client stub. For example, these commands generate a stub file with comments:
  • using the URL of the running service:
    fglrestful -o stub_filename --comment http://localhost:8090/MyService?openapi.json
  • or using a specification file:
    fglrestful -o stub_filename --comment  myservice.openapi
The descriptive text appears in the generated stub file beside the parameter in curly braces, for example:
 p_resourceId INTEGER {this is the customer id}
Note: The WSDescription set on the ATTRIBUTES() clause of the function is not affected. It is always generated; even if the --comment option is not specified.

Output warnings

If you need to see warning messages when generating the client stub, you can specify the -W option in the command. In the example commands warnings are written to the standard output:
  • using the URL of the running service:
    fglrestful -W yes -o stub_filename http://localhost:8090/MyService?openapi.json
  • or using a specification file:
    fglrestful -W yes -o stub_filename myservice.openapi
The warning message gives the path in the openapi.json file where you locate the issue, and gives the reason.
Warning in /paths/Property/GetAllProperties/{applicationID}/{includeWillBeSold}/{update}/get/responses
Reason : Unsupported media='text/plain' on type='WebAPI_CreditAnalysis_Models_PropertyContainer'
Note: Errors are reported by default. The error message gives same kind of path, but with Error in instead of Warning in.