I would like to invoke an external REST API in Wagtail CMS. Let us assume the URL is:
http://dummy.restapiexample.com/api/v1/employees
I tried to follow a Django post which was doing almost the same. See: Proper way to consume data from RESTFUL API in django
I created services.py:
//services.py
import requests
def get_employees(page, request):
url = 'http://dummy.restapiexample.com/api/v1/employees'
r = requests.get(url)
employees = r.json()
return employees
I added the following to models.py:
from . import services as services
class HomePage(RoutablePageMixin, Page):
@route(r'^employees/$')
def employees_page(self,request):
employees = services.get_employees(self, request)
return render(request,'home/employees.html',employees)
When I run this I get the following error:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Here is the stacktrace:
File "/data/swag/home/models.py", line 53, in employees_page
employees = services.get_employees(self, request)
File "/data/swag/home/services.py", line 13, in get_employees
employees = r.json()
File "/home/user1/anaconda3/envs/wadmin/lib/python3.7/site-packages/requests/models.py", line 897, in json
return complexjson.loads(self.text, **kwargs)
File "/home/user1/anaconda3/envs/wadmin/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/home/user1/anaconda3/envs/wadmin/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/home/user1/anaconda3/envs/wadmin/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
It seems the Django code does not work in Wagtail and needs to be adapted. I spent several hours looking for an equivalent but no success. Really appreciate any help.