Arek S
Arek S

Reputation: 4719

Flask blueprint how to debug routing

I've got a flask application that exposes an api.

When I hit this api from browser http://admin.phones.dev/api/v2.0/manufacturers I'm getting status 200 and response as expected. request object:

{
   'view_args':{},
   'cookies':{
      'session':u'eyJfaWQiOnsiIGIiOiJPREJsTURrNFlUZGtNRFkzWVdKbU1XRmlNalJpTldZelkySmhaVGhtT1RjPSJ9fQ.B4PxFw.4ytdqip7jIF3WJLqKyItDf8Cuu0'
   },
   'shallow':False,
   'url_rule':<Rule '/manufacturers/' (HEAD, OPTIONS, GET) -> manufacturers.index>,
   'headers':EnvironHeaders(   [
      ('Cookie', u'session=eyJfaWQiOnsiIGIiOiJPREJsTURrNFlUZGtNRFkzWVdKbU1XRmlNalJpTldZelkySmhaVGhtT1RjPSJ9fQ.B4PxFw.4ytdqip7jIF3WJLqKyItDf8Cuu0'),
      ('Content-Length', u''),
      ('User-Agent', u'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0      ) Gecko/20100101 Firefox/31.0'),
      ('Connection', u'keep-alive'),
      ('Host', u'admin.phones.dev:5000'), 
      ('Cache-Control', u'max-age=0'),
      ('Accept', u'text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8'),
      ('Accept-Language', u'en-US, en;q=0.5'),
      ('Content-Type', u''),
      ('Accept-Encoding', u'gzip, deflate')
   ]   ),
   'environ':{
      'wsgi.multiprocess':False,
      'HTTP_COOKIE':'session=eyJfaWQiOnsiIGIiOiJPREJsTURrNFlUZGtNRFkzWVdKbU1XRmlNalJpTldZelkySmhaVGhtT1RjPSJ9fQ.B4PxFw.4ytdqip7jIF3WJLqKyItDf8Cuu0',
      'SERVER_SOFTWARE':'Werkzeug/0.9.4',
      'SCRIPT_NAME':'/api/v2.0',
      'REQUEST_METHOD':'GET',
      'PATH_INFO':'/manufacturers',
      'SERVER_PROTOCOL':'HTTP/1.1',
      'QUERY_STRING':'',
      'werkzeug.server.shutdown':<function shutdown_server at 0xb54a472c>,
      'CONTENT_LENGTH':'',
      'HTTP_USER_AGENT':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0',
      'HTTP_CONNECTION':'keep-alive',
      'SERVER_NAME':'0.0.0.0',
      'REMOTE_PORT':45113,
      'wsgi.url_scheme':'http',
      'SERVER_PORT':'5000',
      'werkzeug.request':      <Request 'http:      //admin.phones.dev:5000      /api/v2.0/manufacturers'      [
         GET
      ]      >,
      'wsgi.input':<socket._fileobject object at 0xb549a5ec>,
      'HTTP_HOST':'admin.phones.dev:5000',
      'wsgi.multithread':False,
      'HTTP_CACHE_CONTROL':'max-age=0',
      'HTTP_ACCEPT':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
      'wsgi.version':(1, 0),
      'wsgi.run_once':False,
      'wsgi.errors':<open file '<stderr>', mode 'w' at 0xb751b0d0>,
      'REMOTE_ADDR':'192.168.33.1',
      'HTTP_ACCEPT_LANGUAGE':'en-US,en;q=0.5',
      'CONTENT_TYPE':'',
      'HTTP_ACCEPT_ENCODING':'gzip, deflate'
   }
}

Now I've got WordPress app and I'm trying to connect to this api using wp_remote_get(). I can see that request hits flask app but for some reason it's returning 404. Again request object:

{
   'headers':EnvironHeaders(   [
      ('Content-Length', u''),
      ('User-Agent', u'WordPress/3.9.1; http://cbp-v2.localhost.com'),
      ('Host', u'admin.phones.dev'),
      ('Content-Type', u''),
      ('Accept-Encoding', u'deflate;q=1.0, compress;q=0.5, gzip;q=0.5')
   ]   ),
   'cookies':{

   },
   'shallow':False,
   'environ':{
      'wsgi.multiprocess':False,
      'SERVER_SOFTWARE':'Werkzeug/0.9.4',
      'SCRIPT_NAME':'/api/v2.0',
      'REQUEST_METHOD':'GET',
      'PATH_INFO':'/manufacturers',
      'SERVER_PROTOCOL':'HTTP/1.0',
      'QUERY_STRING':'',
      'werkzeug.server.shutdown':<function shutdown_server at 0xb54a479c>,
      'CONTENT_LENGTH':'',
      'HTTP_USER_AGENT':'WordPress/3.9.1; http://cbp-v2.localhost.com',
      'SERVER_NAME':'0.0.0.0',
      'REMOTE_PORT':45115,
      'wsgi.url_scheme':'http',
      'SERVER_PORT':'5000',
      'werkzeug.request':      <Request 'http://admin.phones.dev/api/v2.0/manufacturers'      [
         GET
      ]      >,
      'wsgi.input':<socket._fileobject object at 0xb549a72c>,
      'HTTP_HOST':'admin.phones.dev',
      'wsgi.multithread':False,
      'wsgi.version':(1, 0),
      'wsgi.run_once':False,
      'wsgi.errors':<open file '<stderr>', mode 'w' at 0xb751b0d0>,
      'REMOTE_ADDR':'192.168.33.1',
      'CONTENT_TYPE':'',
      'HTTP_ACCEPT_ENCODING':'deflate;q=1.0, compress;q=0.5, gzip;q=0.5'
   },
   'url':   u'http://admin.phones.dev/api/v2.0/manufacturers',
   'shallow':False,
   'headers':EnvironHeaders(   [
      ('Content-Length', u''),
      ('User-Agent', u'WordPress/3.9.1; http://cbp-v2.localhost.com'),
      ('Host', u'admin.phones.dev'),
      ('Content-Type', u''),
      ('Accept-Encoding', u'deflate;q=1.0, compress;q=0.5, gzip;q=0.5')
   ]   ),
   'environ':{
      'wsgi.multiprocess':False,
      'SERVER_SOFTWARE':'Werkzeug/0.9.4',
      'SCRIPT_NAME':'/api/v2.0',
      'REQUEST_METHOD':'GET',
      'PATH_INFO':'/manufacturers',
      'SERVER_PROTOCOL':'HTTP/1.0',
      'QUERY_STRING':'',
      'werkzeug.server.shutdown':<function shutdown_server at 0xb54a479c>,
      'CONTENT_LENGTH':'',
      'HTTP_USER_AGENT':'WordPress/3.9.1; http://cbp-v2.localhost.com',
      'SERVER_NAME':'0.0.0.0',
      'REMOTE_PORT':45115,
      'wsgi.url_scheme':'http',
      'SERVER_PORT':'5000',
      'werkzeug.request':      <Request 'http://admin.phones.dev/api/v2.0/manufacturers'      [
         GET
      ]      >,
      'wsgi.input':<socket._fileobject object at 0xb549a72c>,
      'HTTP_HOST':'admin.phones.dev',
      'wsgi.multithread':False,
      'wsgi.version':(1, 0),
      'wsgi.run_once':False,
      'wsgi.errors':<open file '<stderr>', mode 'w' at 0xb751b0d0>,
      'REMOTE_ADDR':'192.168.33.1',
      'CONTENT_TYPE':'',
      'HTTP_ACCEPT_ENCODING':'deflate;q=1.0, compress;q=0.5, gzip;q=0.5'
   },
   'routing_exception':   <NotFound '404:Not Found'>
}

My question is how do I debug this issue? I'm relatively new to python and flask, so any tips appreciated.

Upvotes: 0

Views: 1232

Answers (1)

Arek S
Arek S

Reputation: 4719

Curl was missing and after installing it all works again.

Upvotes: 1

Related Questions