The Client
class is the primary API to interact with in the MarkLogic Python client. The Client
class extends the requests
Session
class, thus exposing all methods found in both the Session
class and the requests
API. You can therefore use a Client
object in the same manner as you’d use either the Session
class or the requests
API.
Table of contents
Creating a client
A Client
instance can be created either by providing a base URL for all requests along with authentication:
from marklogic import Client
client = Client('http://localhost:8000', digest=('python-user', 'pyth0n'))
Or via separate arguments for each part of a base URL:
from marklogic import Client
client = Client(host='localhost', port='8000', digest=('python-user', 'pyth0n'))
After constructing a Client
instance, each of the methods in the requests
API for sending an HTTP request can be used without needing to specify the base URL nor the authentication again. For example:
response = client.post('/v1/search')
response = client.get('/v1/documents', params={'uri': '/my-doc.json'})
Because the Client
class extends the Session
class, it can be used as a context manager:
with Client('http://localhost:8000', digest=('python-user', 'pyth0n')) as client:
response = client.post('/v1/search')
response = client.get('/v1/documents', params={'uri': '/my-doc.json'})
Authentication
The Client
constructor includes a digest
argument as a convenience for using digest authentication:
from marklogic import Client
client = Client('http://localhost:8000', digest=('python-user', 'pyth0n'))
An auth
argument is also available for using any authentication strategy that can be configured via the requests auth
argument. For example, just like with requests
, a tuple can be passed to the auth
argument to use basic authentication:
from marklogic import Client
client = Client('http://localhost:8000', auth=('python-user', 'pyth0n'))
Progress Data Cloud Authentication
When connecting to a Progress Data Cloud instance, you will need to set the cloud_api_key
and base_path
arguments. You only need to specify a host
as well, as port 443 and HTTPS will be used by default. For example:
from marklogic import Client
client = Client(host='example.marklogic.cloud', cloud_api_key='some-key-value', base_path='/ml/example/manage')
You may still use a full base URL if you wish:
from marklogic import Client
client = Client('https://example.marklogic.cloud', cloud_api_key='some-key-value', base_path='/ml/example/manage')
Progress Data Cloud uses an access token for authentication; the access token is generated using the API key value. In some scenarios, you may wish to set the token expiration time to a value other than the default used by Progress Data Cloud. To do so, set the cloud_token_duration
argument to a number greater than zero that defines the token duration in minutes:
from marklogic import Client
# Sets a token duration of 10 minutes.
client = Client(host='example.marklogic.cloud', cloud_api_key='some-key-value', base_path='/ml/example/manage',
cloud_token_duration=10)
SSL
Configuring SSL connections is the same as documented for the requests
library. As a convience, the Client
constructor includes a verify
argument for specifying a client certificate so that it does not need to be configured on the Client
instance after it’s been constructed nor on every request:
from marklogic import Client
client = Client('https://localhost:8000', digest=('python-user', 'pyth0n'), verify='/path/to/cert.pem')
When specifying the base URL via separate arguments, the scheme
argument can be set for HTTPS connections:
from marklogic import Client
client = Client(host='localhost', port='8000', scheme='https', digest=('python-user', 'pyth0n'), verify=False)