Swift: Invokes a Supabase Edge Function.

Invoke a Supabase Edge Function.

Examples

Invocation with `Decodable` response

struct Response: Decodable { // Expected response definition } let response: Response = try await supabase.functions .invoke( "hello", options: FunctionInvokeOptions( body: ["foo": "bar"] ) ) 

Invocation with custom response

let response = try await supabase.functions .invoke( "hello", options: FunctionInvokeOptions( body: ["foo": "bar"] ), decode: { data, response in String(data: data, encoding: .utf8) } ) print(type(of: response)) // String? 

Invocation with streamed response

var response = Data() for try await data try await supabase.functions._invokeWithStreamedResponse("hello") { response.append(data) } 

Error handling

 do { let response = try await supabase.functions .invoke( "hello", options: FunctionInvokeOptions( body: ["foo": "bar"] ) ) } catch FunctionsError.httpError(let code, let data) { print("Function returned code \(code) with response \(String(data: data, encoding: .utf8) ?? "")") } catch FunctionsError.relayError { print("Relay error") } catch { print("Other error: \(error.localizedDescription)") } 

Passing custom headers

let response = try await supabase.functions .invoke( "hello", options: FunctionInvokeOptions( headers: [ "my-custom-header": "my-custom-header-value" ] ) ) 

Invoking a Function in the UsEast1 region

let response = try await supabase.functions .invoke( "hello", options: FunctionInvokeOptions( body: ["foo": "bar"], region: .usEast1 ) ) 

Calling with DELETE HTTP verb

let response = try await supabase.functions .invoke( "hello", options: FunctionInvokeOptions( method: .delete, headers: [ "my-custom-header": "my-custom-header-value" ], body: ["foo": "bar"] ) ) 

Calling with GET HTTP verb

let response = try await supabase.functions .invoke( "hello", options: FunctionInvokeOptions( method: .get, headers: [ "my-custom-header": "my-custom-header-value" ] ) ) 

Pass additional query params

let response = try await supabase.functions .invoke( "hello", options: FunctionInvokeOptions( query: [URLQueryItem(name: "key", value: "value")] ) )