In [48]:
import requests
curl -i -X POST http://localhost:8001/apis/ -d "name=test" -d "request_path=/apis" -d "upstream_url=http://localhost:8001/" -d "strip_request_path=true"
curl -i -X GET --url http://localhost:8000/

In [61]:
r = requests.get('http://127.0.0.1:8001')
r.json()


Out[61]:
{u'configuration': {u'admin_access_log': u'logs/admin_access.log',
  u'admin_error_log': u'logs/error.log',
  u'admin_ip': u'0.0.0.0',
  u'admin_listen': u'0.0.0.0:8001',
  u'admin_listen_ssl': u'0.0.0.0:8444',
  u'admin_port': 8001,
  u'admin_ssl': True,
  u'admin_ssl_cert': u'/usr/local/kong/ssl/admin-kong-default.crt',
  u'admin_ssl_cert_csr_default': u'/usr/local/kong/ssl/admin-kong-default.csr',
  u'admin_ssl_cert_default': u'/usr/local/kong/ssl/admin-kong-default.crt',
  u'admin_ssl_cert_key': u'/usr/local/kong/ssl/admin-kong-default.key',
  u'admin_ssl_cert_key_default': u'/usr/local/kong/ssl/admin-kong-default.key',
  u'admin_ssl_ip': u'0.0.0.0',
  u'admin_ssl_port': 8444,
  u'anonymous_reports': True,
  u'cassandra_consistency': u'ONE',
  u'cassandra_contact_points': [u'127.0.0.1'],
  u'cassandra_data_centers': [u'dc1:2', u'dc2:3'],
  u'cassandra_keyspace': u'kong',
  u'cassandra_lb_policy': u'RoundRobin',
  u'cassandra_port': 9042,
  u'cassandra_repl_factor': 1,
  u'cassandra_repl_strategy': u'SimpleStrategy',
  u'cassandra_schema_consensus_timeout': 10000,
  u'cassandra_ssl': False,
  u'cassandra_ssl_verify': False,
  u'cassandra_timeout': 5000,
  u'cassandra_username': u'kong',
  u'client_ssl': False,
  u'client_ssl_cert_csr_default': u'/usr/local/kong/ssl/kong-default.csr',
  u'client_ssl_cert_default': u'/usr/local/kong/ssl/kong-default.crt',
  u'client_ssl_cert_key_default': u'/usr/local/kong/ssl/kong-default.key',
  u'cluster_listen': u'0.0.0.0:7946',
  u'cluster_listen_rpc': u'127.0.0.1:7373',
  u'cluster_profile': u'wan',
  u'cluster_ttl_on_failure': 3600,
  u'custom_plugins': {},
  u'database': u'postgres',
  u'dns_hostsfile': u'/etc/hosts',
  u'dns_resolver': {},
  u'kong_env': u'/usr/local/kong/.kong_env',
  u'latency_tokens': True,
  u'log_level': u'notice',
  u'lua_code_cache': u'on',
  u'lua_package_cpath': u'',
  u'lua_package_path': u'?/init.lua;./kong/?.lua',
  u'lua_socket_pool_size': 30,
  u'lua_ssl_verify_depth': 1,
  u'mem_cache_size': u'128m',
  u'nginx_acc_logs': u'/usr/local/kong/logs/access.log',
  u'nginx_admin_acc_logs': u'/usr/local/kong/logs/admin_access.log',
  u'nginx_conf': u'/usr/local/kong/nginx.conf',
  u'nginx_daemon': u'off',
  u'nginx_err_logs': u'/usr/local/kong/logs/error.log',
  u'nginx_kong_conf': u'/usr/local/kong/nginx-kong.conf',
  u'nginx_optimizations': True,
  u'nginx_pid': u'/usr/local/kong/pids/nginx.pid',
  u'nginx_worker_processes': u'auto',
  u'pg_database': u'kong',
  u'pg_host': u'kong-database',
  u'pg_port': 5432,
  u'pg_ssl': False,
  u'pg_ssl_verify': False,
  u'pg_user': u'kong',
  u'plugins': {u'acl': True,
   u'aws-lambda': True,
   u'basic-auth': True,
   u'bot-detection': True,
   u'correlation-id': True,
   u'cors': True,
   u'datadog': True,
   u'file-log': True,
   u'galileo': True,
   u'hmac-auth': True,
   u'http-log': True,
   u'ip-restriction': True,
   u'jwt': True,
   u'key-auth': True,
   u'ldap-auth': True,
   u'loggly': True,
   u'oauth2': True,
   u'rate-limiting': True,
   u'request-size-limiting': True,
   u'request-termination': True,
   u'request-transformer': True,
   u'response-ratelimiting': True,
   u'response-transformer': True,
   u'runscope': True,
   u'statsd': True,
   u'syslog': True,
   u'tcp-log': True,
   u'udp-log': True},
  u'prefix': u'/usr/local/kong',
  u'proxy_access_log': u'logs/access.log',
  u'proxy_error_log': u'logs/error.log',
  u'proxy_ip': u'0.0.0.0',
  u'proxy_listen': u'0.0.0.0:8000',
  u'proxy_listen_ssl': u'0.0.0.0:8443',
  u'proxy_port': 8000,
  u'proxy_ssl_ip': u'0.0.0.0',
  u'proxy_ssl_port': 8443,
  u'serf_event': u'/usr/local/kong/serf/serf_event.sh',
  u'serf_log': u'/usr/local/kong/logs/serf.log',
  u'serf_node_id': u'/usr/local/kong/serf/serf.id',
  u'serf_path': u'serf',
  u'serf_pid': u'/usr/local/kong/pids/serf.pid',
  u'server_tokens': True,
  u'ssl': True,
  u'ssl_cert': u'/usr/local/kong/ssl/kong-default.crt',
  u'ssl_cert_csr_default': u'/usr/local/kong/ssl/kong-default.csr',
  u'ssl_cert_default': u'/usr/local/kong/ssl/kong-default.crt',
  u'ssl_cert_key': u'/usr/local/kong/ssl/kong-default.key',
  u'ssl_cert_key_default': u'/usr/local/kong/ssl/kong-default.key',
  u'ssl_cipher_suite': u'modern',
  u'ssl_ciphers': u'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256',
  u'upstream_keepalive': 60},
 u'hostname': u'f4880259ac0a',
 u'lua_version': u'LuaJIT 2.1.0-beta2',
 u'plugins': {u'available_on_server': {u'acl': True,
   u'aws-lambda': True,
   u'basic-auth': True,
   u'bot-detection': True,
   u'correlation-id': True,
   u'cors': True,
   u'datadog': True,
   u'file-log': True,
   u'galileo': True,
   u'hmac-auth': True,
   u'http-log': True,
   u'ip-restriction': True,
   u'jwt': True,
   u'key-auth': True,
   u'ldap-auth': True,
   u'loggly': True,
   u'oauth2': True,
   u'rate-limiting': True,
   u'request-size-limiting': True,
   u'request-termination': True,
   u'request-transformer': True,
   u'response-ratelimiting': True,
   u'response-transformer': True,
   u'runscope': True,
   u'statsd': True,
   u'syslog': True,
   u'tcp-log': True,
   u'udp-log': True},
  u'enabled_in_cluster': [u'key-auth']},
 u'prng_seeds': {u'pid: 110': 181698020522L,
  u'pid: 111': 149370691682L,
  u'pid: 112': 619118914216L,
  u'pid: 113': 179819918616L},
 u'tagline': u'Welcome to kong',
 u'timers': {u'pending': 5, u'running': -1820},
 u'version': u'0.10.3'}
curl -i -X POST --url http://localhost:8001/apis/ --data 'name=example-api' --data 'hosts=example.com' --data 'upstream_url=http://httpbin.org'

In [49]:
url = 'http://127.0.0.1:8001/apis/'
data = {
    'name':'keyword',\
    'methods':'GET',\
    'upstream_url':'http://localhost:5001'
}
r = requests.post(url,data=data)
r.json()


Out[49]:
{u'created_at': 1497859604000L,
 u'http_if_terminated': True,
 u'https_only': False,
 u'id': u'4d9eb3b2-db4a-46ee-ada9-936c50fbc952',
 u'methods': [u'GET'],
 u'name': u'keyword',
 u'preserve_host': False,
 u'retries': 5,
 u'strip_uri': True,
 u'upstream_connect_timeout': 60000,
 u'upstream_read_timeout': 60000,
 u'upstream_send_timeout': 60000,
 u'upstream_url': u'http://localhost:5001'}
curl -i -X GET --url http://localhost:8000/ --header 'Host: example.com'

In [50]:
r = requests.get('http://127.0.0.1:8000/keyword')
r.text


Out[50]:
u'{"message":"no API found with those values"}\n'
curl -i -X POST \ --url http://localhost:8001/apis/example-api/plugins/ \ --data 'name=key-auth'

In [51]:
url = 'http://localhost:8001/apis/keyword/plugins/'
data = {'name':'key-auth'}
r = requests.post(url,data=data)
r.json()


Out[51]:
{u'api_id': u'4d9eb3b2-db4a-46ee-ada9-936c50fbc952',
 u'config': {u'anonymous': u'',
  u'hide_credentials': False,
  u'key_in_body': False,
  u'key_names': [u'apikey']},
 u'created_at': 1497859604000L,
 u'enabled': True,
 u'id': u'b521032d-8914-4411-96bd-1a49db498cf5',
 u'name': u'key-auth'}

In [52]:
r = requests.get('http://127.0.0.1:8000')
r.text


Out[52]:
u'{"message":"No API key found in request"}\n'
curl -i -X POST \ --url http://localhost:8001/consumers/ \ --data "username=Jason"

In [53]:
url = 'http://localhost:8001/consumers/'
data = {'username':'lxp'}
r = requests.post(url,data=data)
r.json()


Out[53]:
{u'created_at': 1497859604000L,
 u'id': u'7dc53132-5f0e-4ef7-a717-672028d56fd4',
 u'username': u'lxp'}
curl -i -X POST \ --url http://localhost:8001/consumers/Jason/key-auth/ \ --data 'key=ENTER_KEY_HERE'

In [54]:
url = 'http://localhost:8001/consumers/lxp/key-auth'
data = {'key':'123456'}
r = requests.post(url,data=data)
r.json()


Out[54]:
{u'consumer_id': u'7dc53132-5f0e-4ef7-a717-672028d56fd4',
 u'created_at': 1497859604000L,
 u'id': u'f4e8f607-462e-4f3d-9d6d-2d532df04b04',
 u'key': u'123456'}
curl -i -X GET \ --url http://localhost:8000 \ --header "Host: example.com" \ --header "apikey: ENTER_KEY_HERE"

In [62]:
r = requests.get('http://localhost:8000',headers={'apikey':'123456'})
r.text


Out[62]:
u'{"message":"Invalid authentication credentials"}\n'

In [ ]: