Unable to access my API

Hi Guys,

I am currently getting a problem with TYK, I am trying to add the API to TYK Gateway. But I always receive the error 404

I am able to access my API as this URL http://localhost:3003/api/values. I am using swagger/v1.

My API configuration as below

{

“name”: “myapi”,

“slug”: “myapi”,

“listen_port”: 0,

“protocol”: “”,

“enable_proxy_protocol”: false,

“api_id”: “1”,

“org_id”: “1”,

“use_keyless”: true,

“use_oauth2”: false,

“use_openid”: false,

“openid_options”: {

"providers": null,

"segregate_by_client": false

},

“oauth_meta”: {

"allowed_access_types": null,

"allowed_authorize_types": null,

"auth_login_redirect": ""

},

“auth”: {

"use_param": false,

"param_name": "",

"use_cookie": false,

"cookie_name": "",

"auth_header_name": "Authorization",

"use_certificate": false,

"validate_signature": false,

"signature": {

  "algorithm": "",

  "header": "",

  "secret": "",

  "allowed_clock_skew": 0,

  "error_code": 0,

  "error_message": ""

}

},

“auth_configs”: null,

“use_basic_auth”: false,

“basic_auth”: {

"disable_caching": false,

"cache_ttl": 0,

"extract_from_body": false,

"body_user_regexp": "",

"body_password_regexp": ""

},

“use_mutual_tls_auth”: false,

“client_certificates”: null,

“upstream_certificates”: null,

“pinned_public_keys”: null,

“enable_jwt”: false,

“use_standard_auth”: false,

“use_go_plugin_auth”: false,

“enable_coprocess_auth”: false,

“jwt_signing_method”: “”,

“jwt_source”: “”,

“jwt_identity_base_field”: “”,

“jwt_client_base_field”: “”,

“jwt_policy_field_name”: “”,

“jwt_default_policies”: null,

“jwt_issued_at_validation_skew”: 0,

“jwt_expires_at_validation_skew”: 0,

“jwt_not_before_validation_skew”: 0,

“jwt_skip_kid”: false,

“jwt_scope_to_policy_mapping”: null,

“jwt_scope_claim_name”: “”,

“notifications”: {

"shared_secret": "",

"oauth_on_keychange_url": ""

},

“enable_signature_checking”: false,

“hmac_allowed_clock_skew”: 0,

“hmac_allowed_algorithms”: null,

“request_signing”: {

"is_enabled": false,

"secret": "",

"key_id": "",

"algorithm": "",

"header_list": null,

"certificate_id": ""

},

“base_identity_provided_by”: “”,

“definition”: {

"location": "header",

"key": "x-api-version",

"strip_path": false

},

“version_data”: {

"not_versioned": true,

"default_version": "",

"versions": {

  "Default": {

    "name": "Default",

    "expires": "",

    "paths": {

      "ignored": null,

      "white_list": null,

      "black_list": null

    },

    "use_extended_paths": true,

    "extended_paths": {},

    "global_headers": null,

    "global_headers_remove": null,

    "global_size_limit": 0,

    "override_target": ""

  }

}

},

“uptime_tests”: {

"check_list": null,

"config": {

  "expire_utime_after": 0,

  "service_discovery": {

    "use_discovery_service": false,

    "query_endpoint": "",

    "use_nested_query": false,

    "parent_data_path": "",

    "data_path": "",

    "port_data_path": "",

    "target_path": "",

    "use_target_list": false,

    "cache_timeout": 0,

    "endpoint_returns_list": false

  },

  "recheck_wait": 0

}

},

“proxy”: {

"preserve_host_header": false,

"listen_path": "/api/",

"target_url": "http://api/swagger/v1",

"disable_strip_slash": false,

"strip_listen_path": true,

"enable_load_balancing": false,

"target_list": null,

"check_host_against_uptime_tests": false,

"service_discovery": {

  "use_discovery_service": false,

  "query_endpoint": "",

  "use_nested_query": false,

  "parent_data_path": "",

  "data_path": "",

  "port_data_path": "",

  "target_path": "",

  "use_target_list": false,

  "cache_timeout": 0,

  "endpoint_returns_list": false

},

"transport": {

  "ssl_insecure_skip_verify": false,

  "ssl_ciphers": null,

  "ssl_min_version": 0,

  "proxy_url": ""

}

},

“disable_rate_limit”: false,

“disable_quota”: false,

“custom_middleware”: {

"pre": null,

"post": null,

"post_key_auth": null,

"auth_check": {

  "name": "",

  "path": "",

  "require_session": false,

  "raw_body_only": false

},

"response": null,

"driver": "",

"id_extractor": {

  "extract_from": "",

  "extract_with": "",

  "extractor_config": null

}

},

“custom_middleware_bundle”: “”,

“cache_options”: {

"cache_timeout": 0,

"enable_cache": false,

"cache_all_safe_requests": false,

"cache_response_codes": null,

"enable_upstream_cache_control": false,

"cache_control_ttl_header": ""

},

“session_lifetime”: 0,

“active”: true,

“internal”: false,

“auth_provider”: {

"name": "",

"storage_engine": "",

"meta": null

},

“session_provider”: {

"name": "",

"storage_engine": "",

"meta": null

},

“event_handlers”: {

"events": null

},

“enable_batch_request_support”: false,

“enable_ip_whitelisting”: false,

“allowed_ips”: null,

“enable_ip_blacklisting”: false,

“blacklisted_ips”: null,

“dont_set_quota_on_create”: false,

“expire_analytics_after”: 0,

“response_processors”: null,

“CORS”: {

"enable": false,

"allowed_origins": null,

"allowed_methods": null,

"allowed_headers": null,

"exposed_headers": null,

"allow_credentials": false,

"max_age": 0,

"options_passthrough": false,

"debug": false

},

“domain”: “”,

“certificates”: null,

“do_not_track”: false,

“tags”: null,

“enable_context_vars”: false,

“config_data”: null,

“tag_headers”: null,

“global_rate_limit”: {

"rate": 0,

"per": 0

},

“strip_auth_data”: false

}

I hope you guys can guide me in a good way to troubleshoot.

In the meantime, Is these anyway to output the verbose in the tyk log to see how tyk gateway process and forward the request to the API URI.

Thanks so much

I understand this may be a very late reply, but I’ll drop steps to troubleshoot 404 errors on the gateway below:

  • Verify you are indeed calling the right endpoint on the gateway. Check the host and the port values matches your gateway’s hostname/listen_address and listen_port fields.
  • Probe your gateway and dashboard connection. Explore the connections are intact by testing connection status via our liveliness health check endpoint. You can also disect the gateway and dashboard interconnected config fields e.g. db_app_conf_options and tyk_api_config
  • Review your gateway configuration and validate your environment variables are not overriding the config file. If your gateway is sharded, ensure the right segment tags are added.
  • Inspect the list of APIs loaded on the gateway and confirm the desired API definition is registered on the gateway. Use the gateway REST API (tyk/apis) to reveal the API definitions loaded on the gateway. If in RPC mode, peruse the gateway logs for slug binding warnings, listen_path collision errors, or duplicate API debug messages on gateway startup. You can emit logs in debug mode via the log_level field for more verbose logging.
  • Enable track_404_logs on the gateway and examine the gateway logs for the proxied resource path
  • Examine the latency field of the resulting analytics record. If using the dashboard, look up the logs in the Log Browser and analyse the response details. If latency is greater than zero, Tyk successfully proxied the request upstream.
  • Audit your API definition configuration:
    • Check if strip_listen_path is desired. Also, test if disable_strip_slash does not interrupt the final resource path.
    • Investigate the listen_port, protocol, domain, listen_path, version_data and internal/external state of API definition.
    • Validate your upstream, custom_middleware or proxy configurations. Inject a dummy upstream with lean configurations to verify there are no issues.