Changes

Jump to navigation Jump to search
2,451 bytes added ,  16:29, 29 June 2023
no edit summary
{{Announce|The conventions for the client functions were revised:}} * The {{Code|replace}} and {{Code|store}} functions have been renamed to {{Code|put}} and {{Code|putBinary}}.* The {{Code|RETRIEVE}} command has been replaced by {{Command|BINARY GET}}.* Existing client implementations are working without changes unless they haven’t been upgraded. This page is part of the [[Developer Section]]. It describes how to communicate with BaseX provides clients in several from other programming languages. With these  You can use the following light-weight language bindings,you will be able to connect to a running BaseX server instance, execute all databasecommands 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 on the available commands . Currently, we offer bindings for the following programming languages: <table width='100%'> <tr> <td width='50%' valign='top'>'''BaseX 7.x, BaseX 8.x and perform querieslater'''* [https://github.com/BaseXdb/basex/tree/main/basex-examples/src/main/java/org/basex/examples/api Java]: The default implementation* [https://github.com/bsella/BaseX_CppClient C++]: contributed by Karim Salama (based on SDL2_net)* [https://github.com/JohnLeM/BasexCPPAPI/ C++]: contributed by Jean-Marc Mercier (based on libboost)* [https://github.com/BaseXdb/basex/tree/main/basex-api/src/main/c%23 C#], contributed by the BaseX Team and Martín Ferrari* [https://github.com/BaseXdb/basex/tree/main/basex-api/src/main/c C], contributed by the BaseX Team* [https://github.com/programaths/go-basex Golang]: contributed by Christian Baune* [https://github.com/zadean/basexerl/blob/main/src/bxe_client.erl Erlang]: contributed by Zachary Dean* [https://github.com/apb2006/basex-node node.js]: contributed by Andy Bunce* [https://github.com/BaseXdb/basex/tree/main/basex-api/src/main/perl Perl], contributed by the BaseX Team* [https://github.com/BaseXdb/basex/tree/main/basex-api/src/main/php PHP]: updated by James Ball* [https://github.com/BaseXdb/basex/tree/main/basex-api/src/main/python Python]: contributed by Hiroaki Itoh* [https://github.com/lucalianas/pyBaseX Python], using BaseX REST services: contributed by Luca Lianas* [https://github.com/BenEngbers/RBaseX R]: contributed by Ben Engbers* [https://github.com/BaseXdb/basex/tree/main/basex-api/src/main/raku Raku]: contributed by Wayland* [https://github.com/BaseXdb/basex/tree/main/basex-api/src/main/ruby Ruby], contributed by the BaseX Team* [https://github.com/eptx/v-basex V], contributed by Erik Peterson With <b>Version 8.0</b>, authentication has changed. Some language bindings have not been updated yet. The update is rather trivial, though ([[Server_Protocol#Authentication|see here]] for more details); patches are welcome. </td> <td width='50%' valign='top'>'''BaseX 7.x''' (outdated)* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/as ActionScript]: contributed by Manfred Knobloch* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/haskell Haskell]: contributed by Leo W&ouml;rteler* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/lisp Lisp]: contributed by Andy Chambers* [https://github.com/hanshuebner/simple-basex node.js]: contributed by Hans Hübner (deviating from client API)* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/qt Qt]: contributed by Hendrik Strobelt* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/rebol Rebol]: contributed by Sabu Francis* [https://github.com/delving/basex-scala-client Scala]: contributed by Manuel Bernhardt* [https://github.com/BaseXdb/basex/tree/7.9/basex-api/src/main/scala Scala] (simple implementation)* [https://github.com/BaseXdb/basex/tree/main/basex-api/src/main/vb VB], contributed by the BaseX Team </td> </tr></table>
* [[Standard Mode]]: Description Many of the usage of interfaces contain the standard mode. following files:* [[<code>BaseXClient</code> contains the code for creating a session, sending and executing commands and receiving results. An inner <code>Query Mode]]: Description of </code> class facilitates the usage binding of external variables and iterative query evaluation.* <code>Example</code> demonstrates how to send database commands.* <code>QueryExample</code> shows you how to evaluate queries in an iterative manner.* <code>QueryBindExample</code> shows you how to bind a variable to your query and evaluates the query modein an iterative manner.* <code>CreateExample</code> shows how new databases can be created by using streams.* <code>AddExample</code> shows how documents can be added to a database by using streams.
Currently, we offer bindings for the following programming languages (bindings in other languages are welcome!):; Object oriented:: [https://github.com/BaseXdb/basex-api/tree/master/src/main/c%23 C#], [https://github.com/BaseXdb/basex-api/tree/master/src/main/vb VB], [https://github.com/BaseXdb/basex-api/tree/master/src/main/java Java] ; Scripting: [https://github.com/BaseXdb/basex-api/tree/master/src/main/php PHP], [https://github.com/BaseXdb/basex-api/tree/master/src/main/python Python], [https://github.com/BaseXdb/basex-api/tree/master/src/main/perl Perl], [https://github.com/BaseXdb/basex-api/tree/master/src/main/ruby Ruby]: [https://github.com/BaseXdb/basex-api/tree/master/src/main/rebol Rebol] (thanks to Sabu Francis); Functional:: [https://github.com/BaseXdb/basex-api/tree/master/src/main/lisp Lisp] (thanks to Andy Chambers): [https://github.com/BaseXdb/basex-api/tree/master/src/main/haskell Haskell] (thanks to Leo W&ouml;rteler) Most of the interfaces contain at least the following six files:# <code>BaseXClient</code> contains the actual code for creating a session, sending and executing commands and receiving results. Furthermore there is an inner class called <code>query</code> which offers the evaluation of queries in an iterative manner. # <code>Example</code> demonstrates how to send database commands.# <code>QueryExample</code> shows you how to evaluate queries in an iterative manner.# <code>QueryBindExample</code> shows you how to bind a variable to your query and evaluates the query in an iterative manner.# <code>CreateExample</code> shows how new databases can be created by using streams.# <code>AddExample</code> shows how documents can be added to a database by using streams.=Changelog=
;Version 10.0* Updated: The interfaces Java {{Code|replace}} and C# also support the event feature:# <code>EventExample</code> demonstrates how {{Code|store}} functions have been renamed to use the event feature. Please check out [https://github.com/BaseXdb/basex-api/blob/master/src/main/readme.txt readme.txt]for more background information on the client/server communication{{Code|put}} and {{Code|putBinary}}.
[[Category:Developer]][[Category:Server]];Version 8.0[[Category* Updated:API]]cram-md5 replaced with digest authentication.
Bureaucrats, editor, reviewer, Administrators
13,554

edits

Navigation menu