Is there a versatile API gateway for multiple backends?

Hey everyone,

I’m on the hunt for a lightweight solution that can act as a smart middleman for HTTP requests. Here’s what I’m hoping to find:

  • Can route requests to different backends based on URI, REST verb, or service location
  • Handles encoding for various formats (XML, JSON, binary data)
  • Pluggable into different backend systems (message queues, job dispatchers, external processes)
  • Minimal wrapper needed for message translation
  • Customizable request dispatching

Basically, I’m looking for a flexible API gateway that can adapt to various backend setups. Does anyone know if something like this exists as a standalone app?

Oh, and it would be awesome if it’s written in PHP, but I’m open to other options too if they fit the bill.

Thanks for any suggestions!

hey flyingeagle, sounds like a cool project! have u checked out tyk? it’s not php but hits most of ur points. handles routing, encoding, and customization. plus its open-source. might be worth a look! what kinda project u working on? sounds interesting

For your requirements, I’d recommend looking into API Umbrella. It’s a robust open-source API management platform that addresses many of your needs. API Umbrella offers advanced routing capabilities, supports various data formats, and allows for customizable request handling. While not PHP-based, it’s highly configurable and can integrate with multiple backend systems.

One standout feature is its ability to handle rate limiting and analytics out of the box, which could be beneficial for monitoring and optimizing your API performance. It also provides a web admin interface for easier management.

Have you considered any specific performance requirements or scalability needs for your project? That could help narrow down the best solution for your use case.

ooh, that sounds like an interesting project! have you looked into Kong? it’s not PHP, but it’s super versatile and can do a lot of what youre asking. what kind of backends are you working with? I’m curious about your use case - maybe we could brainstorm some other ideas?