Clients

This page describes how to communicate with BaseX from other programming languages.

You can use the following light-weight language bindings to connect to a running BaseX server instance, execute database commands and evaluate XQuery expressions.

Most clients provide two modes:

  • Standard Mode: connecting to a server, sending commands
  • Query Mode: defining queries, binding variables, iterative evaluation

Please see the Server Protocol for more information about the available commands. Currently, we offer bindings for the following programming languages:

Available Bindings

  • Java: The default implementation
  • C++: contributed by Karim Salama (based on SDL2_net)
  • C++: contributed by Jean-Marc Mercier (based on libboost)
  • C++: contributed by Ben Engbers (based on CMake)
  • C#, contributed by the BaseX Team and Martín Ferrari
  • C, contributed by the BaseX Team
  • Golang: contributed by Christian Baune
  • Erlang: contributed by Zachary Dean
  • node.js: contributed by Andy Bunce
  • Perl, contributed by the BaseX Team
  • PHP: updated by James Ball
  • Python: contributed by Hiroaki Itoh
  • Python, using BaseX REST services: contributed by Luca Lianas
  • R: contributed by Ben Engbers
  • Raku: contributed by Wayland
  • Rust
  • Ruby, contributed by the BaseX Team
  • V, contributed by Erik Peterson

Authentication

With Version 13.0, the login handshake has changed (see here for more details). The bindings maintained by the BaseX Team have been updated.

Clients of Version 8 to 12 are still accepted by the server, but only if digest is enabled in the AUTHALGORITHMS option, which is no longer the case by default. Clients of Version 13 cannot connect to older servers.

Many implementations contain the following files:

  • BaseXClient contains the code for creating a session, sending and executing commands and receiving results. An inner Query class facilitates the binding of external variables and iterative query evaluation.
  • Example demonstrates how to send database commands.
  • QueryExample shows you how to evaluate queries iteratively.
  • QueryBindExample shows you how to bind a variable to your query and evaluates the query iteratively.
  • CreateExample shows how new databases can be created by using streams.
  • AddExample shows how documents can be added to a database by using streams.

Changelog

Version 13.0
  • Updated: Digest replaced with salted authentication.
  • Removed: Support for cram-md5 authentication, and the outdated clients.
Version 10.0
  • Updated: The replace and store functions have been renamed to put and putBinary.
Version 8.0
  • Updated: cram-md5 replaced with digest authentication.

⚡Generated with XQuery