Description
AnyAPI is a library that helps you to write any API wrappers with ease and in pythonic way.
AnyAPI alternatives and similar packages
Based on the "HTTP" category.
Alternatively, view AnyAPI alternatives based on common mentions on social networks and blogs.
-
requests-futures
Asynchronous Python HTTP Requests for Humans using Futures -
httplib2
Small, fast HTTP client library for Python. Features persistent connections, cache, and Google App Engine support. Originally written by Joe Gregorio, now supported by community. -
kiss-headers
Python package for HTTP/1.1 style headers. Parse headers to objects. Most advanced available structure for http headers. -
glQiwiApi
🥝 The ultrarapid and multifunctional wrapper over QIWI and YooMoney -
FGrequests
Fastest python library for making asynchronous group requests.
Updating dependencies is time-consuming.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of AnyAPI or a related project?
README
AnyAPI
AnyAPI is a library that helps you to write any API wrappers with ease and in pythonic way.
Features
- Have better looking code using dynamic method calls.
- Filters to help you to modify request, raise errors or log requests instead of writing functions everywhere.
- Scoped calls to raise errors and take action if necessary.
- Automatic retrying if the condition met with what you passed.
- Built-in rate limit proxy changer. (you can write your own proxy handler)
- Since it is built on top of requests anything compatible with it is compatible with AnyAPI.
But most importantly in AnyAPI almost everything is modular!
Examples
Making GET request to https://httpbin.org/anything/endpoint
from anyapi import AnyAPI
base_url = 'https://httpbin.org'
api = AnyAPI(base_url)
api.anything.endpoint.GET()
As you can see dots are pretended as slash and at the end you should put dot and HTTP method you want to use in capital letters.
Setting header before every request
import datetime
from anyapi import AnyAPI
def set_date_as_header(kwargs):
now = datetime.datetime.now()
kwargs['headers'].update({'date': now.strftime('%B %d %Y')})
return kwargs
api = AnyAPI('https://httpbin.org')
api._filter_request.append(set_date_as_header)
print(api.anything.endpoint.GET().json())
# output
{
'args': {},
'data': '',
'files': {},
'form': {},
'headers': {
'Accept-Encoding': 'identity',
'Connection': 'close',
'Date': 'January 16 2019',
'Host': 'httpbin.org'
},
'json': None,
'method': 'GET',
'origin': 'XX.XX.XX.XX',
'url': 'https://httpbin.org/anything/endpoint'
}
As you can see filter worked as expected and set Date
header.
Changing proxy automatically after they reach their rate limit
from anyapi import AnyAPI
from anyapi.proxy_handlers import RateLimitProxy
proxy_configuration = {
'default': proxy0,
'proxies': [proxy0, proxy1, proxy2,....], # don't forget to add default proxy!
'paths': {
'/anything': rate_limit0,
'/anything/endpoint': rate_limit1
}
}
api = AnyAPI('https://httpbin.org', proxy_configuration=proxy_configuration, proxy_handler=RateLimitProxy)
for i in range(10):
print(api.anything.endpoint.GET().json())
If you check output of the all them you can see proxy changes when it reaches limit.
This library is not a new thing
There is a lot of libraries you can find out there for example Uplink, Hammock and many more...
Installation
Library on PyPI so just run
pip install anyapi