All Projects → arbor-dev → arbor

arbor-dev / arbor

Licence: other
Statically configured API Gateway framework

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to arbor

lambda-redirector
Redirect an entire website using AWS Lambda
Stars: ✭ 21 (+61.54%)
Mutual labels:  api-gateway
linkpe
Linkpe is a Node.js based API🐳 to generate shareable UPI Payment links
Stars: ✭ 22 (+69.23%)
Mutual labels:  api-gateway
go-microservices-and-krakend-api-gateway
This is a shopping basket workshop that shows how to use KrakenD API Gateway.
Stars: ✭ 44 (+238.46%)
Mutual labels:  api-gateway
okta-api-center
Get up and running quickly with Okta's OAuth as a Service and your favorite API Gateway.
Stars: ✭ 58 (+346.15%)
Mutual labels:  api-gateway
demo-serverless-aspnetcore
ASP.Net Core 3.1 on AWS Lambda demo
Stars: ✭ 22 (+69.23%)
Mutual labels:  api-gateway
webpack-aws-lambda
AWS Lambda that runs webpack and output the bundle.js file
Stars: ✭ 12 (-7.69%)
Mutual labels:  api-gateway
super-serverless-sample
Backend serverless que simula o sistema de votação do BBB
Stars: ✭ 30 (+130.77%)
Mutual labels:  api-gateway
api-gateway
Api Gateway for a microservices deployment
Stars: ✭ 31 (+138.46%)
Mutual labels:  api-gateway
django-api-bouncer
Simple Django app to provide API Gateways for micro-services
Stars: ✭ 18 (+38.46%)
Mutual labels:  api-gateway
3scale-security-oidc-demo
Securing APIs with OpenID Connect using 3scale API Management and Red Hat Single Sign On
Stars: ✭ 25 (+92.31%)
Mutual labels:  api-gateway
mangum-cli
CLI tools for use with Mangum
Stars: ✭ 14 (+7.69%)
Mutual labels:  api-gateway
api-front
api统一前端、转发代理、协议分析、流量复制
Stars: ✭ 97 (+646.15%)
Mutual labels:  api-gateway
aws lambda ftp function
AWS Lambda Function to connect to FTP, download files and save them to S3 bucket
Stars: ✭ 55 (+323.08%)
Mutual labels:  api-gateway
nestjs-graphql-serverless
Boilerplate for using NestJS with GraphQL (Code-First) on serverless environment (AWS Lambda)
Stars: ✭ 64 (+392.31%)
Mutual labels:  api-gateway
mlapi
An easy to use/extend object recognition API you can locally install. Python+Flask. Also works with ZMES!
Stars: ✭ 49 (+276.92%)
Mutual labels:  api-gateway
hango-gateway
Hango API Gateway, build on Envoy & Istio.
Stars: ✭ 306 (+2253.85%)
Mutual labels:  api-gateway
example-step-functions-integration-api-gateway
Example application using the new Step Functions integration with API Gateway. It developers to call API Gateway REST APIs and API Gateway from a Step Functions workflow.
Stars: ✭ 17 (+30.77%)
Mutual labels:  api-gateway
graphql-gateway-apollo-express
Creating high performance and secure GraphQL APIs with Node.js, Apollo server, GraphQL and TypeScript
Stars: ✭ 122 (+838.46%)
Mutual labels:  api-gateway
reactivesearch-api
API Gateway for Elasticsearch with declarative querying and out-of-the-box access controls
Stars: ✭ 146 (+1023.08%)
Mutual labels:  api-gateway
cv4pve-api-dotnet
Proxmox VE Client API .Net C#
Stars: ✭ 25 (+92.31%)
Mutual labels:  api-gateway

alt tag Build Status GoDoc Join the chat at https://acm-uiuc.slack.com/messages/C6XGZD212/ Go Report Card

Arbor is a statically configured framework for creating API Gateways. It provides the following capabilities:

  • Easy registration of services
  • Basic application authorization and request sanitization
  • Proxying API calls
  • Managing inter-service communication

Arbor supports JSON APIs with support for others coming soon. When registering as service specify the data encoding and when requesting a resource though groot make the request using json.

Registering Services

Add the API spec in a new file (ex. todo.go) in the services package

There is a set of proxy api calls defined in the proxy package that will route call to the backend services

AS OF 10/28/15

/**
 *  Pass the http Request from the client and the ResponseWriter it expects
 *  Pass the target url of the backend service (not the url the client called)
 *  Pass the format of the service
 *  Pass a authorization token (optional)
 *  Will call the service and return the result to the client.
 **/
 func GET(w http.ResponseWriter, url string, format string, token string, r *http.Request)
 /**
  *  Pass the http Request from the client and the ResponseWriter it expects
  *  Pass the target url of the backend service (not the url the client called)
  *  Passes the encoded json(only format currently supported) to the service.
  *  Pass a authorization token (optional)
  *  Will call the service and return the result to the client.
  **/
  func POST(w http.ResponseWriter, url string, format string, token string, r *http.Request)
 /**
  *  Pass the http Request from the client and the ResponseWriter it expects
  *  Pass the target url of the backend service (not the url the client called)
  *  Passes the encoded json(only format currently supported) to the service.
  *  Pass a authorization token (optional)
  *  Will call the service and return the result to the client.
  **/
  func PUT(w http.ResponseWriter, url string, format string, token string, r *http.Request)
/**
 *  Pass the http Request from the client and the ResponseWriter it expects
 *  Pass the target url of the backend service (not the url the client called)
 *  Pass a authorization token (optional)
 *  Will call the service and return the result to the client.
 **/
 func DELETE(w http.ResponseWriter, url string, format string, token string, r *http.Request)

All secret data should be kept in a file called config.go in the config directory

Install

Minimum supported version is Go 1.8

go get -u github.com/arbor-dev/arbor/...

run the server

go run ./server/*.go

compile the service

go build -o groot [PATH TO GROOT]/server

CLI

groot [-r | --register-client client_name] [-c | --check-registration token] [-u | --unsecured]

-r | --register-client client_name

registers a client, generates a token

-c | --check-registration token

checks if a token is valid and returns name of client

-u | --unsecured

runs groot without the security layer

-l | --list-clients

lists all registered client names

-d | --delete-client client_name

deletes the client token with the given name

without args

runs groot with the security layer

License

This project is licensed under the University of Illinois/NCSA Open Source License. For a full copy of this license take a look at the LICENSE file.

When contributing new files to this project, preappend the following header to the file as a comment:

Copyright © 2017, ACM@UIUC

This file is part of the Groot Project.  
 
The Groot Project is open source software, released under the University of Illinois/NCSA Open Source License. 
You should have received a copy of this license in a file with the distribution.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].