Wix Studio: About Web Methods

Wix allows you to add both backend and frontend code to your site. Backend code is executed on the server, while frontend code is executed in the browser. In order to call backend code from the frontend, you can use a special type of function called a web method. Wix handles all the backend-frontend communication required to enable this access. This article explains how to use web methods.

What are web methods?

Web methods are wrappers used to export backend functions. These wrappers not only define the exported function but also set permissions for it. The permissions are then applied in the frontend whenever the function is called. Web methods can only be defined in files with a .web.js extension.

You can define web methods by importing the webMethod function and the Permissions enum from the wix-web-module module. You always need to import these when defining a web method. The webMethod function takes 2 arguments: a permission and a function. The permission defines who can call the function from the frontend. The Permissions enum includes the different possible permissions. The function is the backend function that you want to export.

Here's an example of defining a backend function using a web method wrapper in a .web.js file:

Copy
1
import {Permissions, webMethod} from "wix-web-module";
2
3
export const multiply = webMethod(Permissions.Anyone, (a,b) => a * b);

In this example, the multiply function is defined using the webMethod wrapper. The Permissions.Anyone argument means that anyone can call this function from the frontend.

Understand Permissions

Permissions for web methods are defined when the function is defined in the backend. Once a function is defined with a permission, that permission is applied whenever the function is called from the frontend. There are 3 options for permissions:

  • Anyone: Any site visitor can call the function from the frontend.
  • SiteMember: Only logged-in site members can call the function from the frontend.
  • Admin: Only site administrators can call the function from the frontend.

Here are examples of how to define functions with each type of permission in a .web.js file:

Copy
1
import {Permissions, webMethod} from "wix-web-module";
2
3
// Anyone can call this function
4
export const multiply = webMethod(Permissions.Anyone, (a,b) => a * b);
5
6
// Only members can call this function
7
export const add = webMethod(Permissions.SiteMember, (a,b) => a + b);
8
9
// Only admins can call this function
10
export const subtract = webMethod(Permissions.Admin, (a,b) => a - b);

In this example, the multiply function can be called by anyone, the add function can only be called by logged-in site members, and the subtract function can only be called by site administrators.

Call backend functions from frontend code

Once you've defined your backend functions using web methods, you can import them into your frontend code files and call them. Note that all imported backend functions are asynchronous.

Here's an example of how to call a backend multiply function from the frontend:

Copy
1
import {multiply} from 'backend/myModule.web';
2
3
$w.onReady(function () {
4
multiply(5, 3).then((result) => {
5
console.log(result); // Logs 15
6
});
7
});

In this example, the multiply function is imported from the backend module and then called in the frontend. The result is logged to the console.

Was this helpful?
Yes
No