REST Web services APIs
Genero provides BDL function attributes to define high-level REST Web services. Low-level REST web services are implemented using standard HTTP classes.
High-level and low-level REST APIs
REST Web services implemented with the high-level framework outweigh a low-level solution in terms of ease of creation. A summary of each API is given next.
- REST high-level APIs
-
Web services implemented with the high-level REST framework use the Function attributes feature to define details of the Web service. Function attributes are specified in an
ATTRIBUTES()
clause of the function to define operation type, and path. Attributes also define parameters for path template, query strings, return values, etc., of your RESTful Web service function. These special attributes for REST high-level define the framework for creating REST web services.Web service function attributes are identified with the
WS*
prefix. For example, the sample functionadd
, is defined on the server side using the attributes,WSGET
,WSQuery
,WSPath
, andWSDescription
.These define the resource's endpoint (/add
) that the API exposes, the GET HTTP method used, and the values expected in the query string.PUBLIC # Query sample FUNCTION Add(a INTEGER ATTRIBUTES(WSQuery), b INTEGER ATTRIBUTES(WSQuery)) ATTRIBUTES (WSGET, WSPath='/add', WSDescription='Simple query sample') RETURNS (INTEGER) RETURN a + b END FUNCTION
When you need to determine what functions are available on the server, you can use the fglrestful tool (server side), to get all of the information necessary in an OpenAPI specification file (JSON or YAML). The fglrestful tool can also generate a stub file for the client.
- REST low-level APIs
-
The standard HTTP classes
HTTPRequest
,HTTPResponse
, andHTTPServiceRequest
are available if you need to code individual commands. Be aware that you have to write all the HTTP code of your services by hand.The client stub generated by the fglrestful tool implements low-level APIs.
When to use high-level REST APIs
The recommendation is to use the high-level APIs wherever possible to implement RESTful Web services because using the REST attributes in your function parameters require less code in your application. They provide functionality that would otherwise need to be handled with many low-level API calls.
When to use low-level REST APIs
You may opt to use low-level APIs when there is a need for more detailed and granular control, or you may opt to use them in specific scenarios because a high-level implementation may not yet be available.