# REST controller
# Pre-requisites
from bottle import request
from pip_services4_http.controller import RestController
from pip_services4_components.config import ConfigParams
class MyRestController(RestController):
def __init__(self):
super(MyRestController, self).__init__()
self._base_route = "/my_controller"
# GET
def my_page_get(self, name):
result = f"{request.query.get('message')}, {name}"
return self.send_result(result)
# HEAD
def my_page_head(self, name):
return self.send_result(None)
# POST
def my_page_post(self, name):
body_data = self._get_data()
result = f"{request.query.get('message')}, {name}, " \
f'data:{body_data.get("data1")}'
return self.send_result(result)
# PUT
def my_page_put(self, name):
body_data = self._get_data()
result = f"{request.query.get('message')}, {name}, " \
f'data:{body_data.get("data1")}'
return self.send_result(result)
# Route registration
def register(self):
self.register_route(method="GET", route="/my_page/<name>", schema=None, handler=self.my_page_get)
self.register_route(method="HEAD", route="/my_page/<name>", schema=None, handler=self.my_page_head)
self.register_route(method="POST", route="/my_page/<name>", schema=None, handler=self.my_page_post)
self.register_route(method="PUT", route="/my_page/<name>", schema=None, handler=self.my_page_put)
# Instantiation
controller = MyRestController()
# Configuration
controller.configure(ConfigParams.from_tuples("connection.protocol", "http",
"connection.host", "localhost",
"connection.port", 15231))
# Connection
controller.open(None)
# REST client
# Pre-requisites
from pip_services4_http.clients import RestClient
class MyRestClient(RestClient):
def __init__(self):
super().__init__()
self._base_route = '/my_controller'
def get_data_get(self, context, name: str):
result = self._call("get", "/my_page/" + name, context, params={'message': 'Hello'})
return result
def get_data_head(self, context, name: str):
result = self._call("head", "/my_page/" + name, context, params={'message': 'Hello'}, data={
"data1": "my data"})
return result
def get_data_post(self, context, name: str):
result = self._call("post", "/my_page/" + name, context, params={'message': 'Hello'}, data={
"data1": "my data"})
return result
def get_data_put(self, context, name: str):
result = self._call("put", "/my_page/" + name, context, params={'message': 'Hello'}, data={
"data1": "my data"})
return result
# Instantiation
client = MyRestClient()
# Configuration
client.configure(ConfigParams.from_tuples("connection.protocol", "http",
"connection.host", "localhost",
"connection.port", 15231))
# Connection
client.open(None)
# Using the different HTTP methods
# GET
print("GET: ", client.get_data_get(None, "David"))
# HEAD
print("HEAD: ", client.get_data_head(None, "David"))
# POST
print("POST: ", client.get_data_post(None, "David"))
# PUT
print("PUT: ", client.get_data_put(None, "David"))
# Close REST controller and REST client
client.close(None)
controller.close(None)