Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

If you are new to web service interfaces, first review HTTP Request Structure for an overview of what makes up an HTTP request.

When building HTTP requests in the Translator, there are several tips and tricks to know:

 Modularize your web service interactions

Create separate functions for different tasks like authentication, making API requests, or specific operations/methods (e.g., createOrder). This keeps your code organized and easy to maintain.

In the Translator, these files can be organized into folders and one or more lua files, depending on the scale of operations required.

For example, in the screenshot below, all files are stored in the APIclient folder.

  • apiCall.lua is responsible for making HTTP requests and handling the responses from the API.

  • createOrder.lua and getOrder.lua are sample API method functions that prepare the request before calling apiCall.

 Use Custom Fields to pass configurations and parameters

Avoid hardcoding configurations and parameters. Centralize configuration data in Custom Fields to make the interface adaptable and more secure.

Information such as the base URL, authentication data (clientID, client secrets, username, password, tokens, etc.), and retry logic are good candidates for custom fields!

This way, you can update configurations without modifying the core logic of your API calls.

screenshot

 Pass parameters as a table

Using tables to store parameters allows you to dynamically build the data you need to send with the request. It also keeps your functions simple and support multiple optional parameters.

 Preparing the body

Depending on the API you’re working with and the type of request, there are a few functions that you may want to use to prepare the body or query string parameters:

  • For JSON: json.serialize{} to convert a Lua table to a string

  • For XML: tostring() or :S() to convert an XML node tree to a string

  • For query strings: with net.http.get() use the parameters argument to pass a table of query parameters and values to automatically append them to the URL.

 Use pcall and retry

Make your integration more robust by handling errors and retrying calls when necessary. This is particularly useful for handling intermittent network or server issues.

 Set a timeout
  • Prevent requests from hanging indefinitely by specifying a timeout parameter in the net.http.* call.

 Document your functions!

Create Help Files (*.help) to document how your functions work and how to use them will make it easier for the rest of the team to understand and reuse your functions.

If you are a more advanced user or are building a complex integration, refer to our Shell Adapter for a great template to structure your web client adapters to any API system.

  • No labels