Skip to main content

Declarative Python HTTP Client, inspired by the OpenFeign java project

Project description

PyFeign - Declarative REST Client

Python implementation of Feign.

Installation

pip install pyfeign
# or
poetry install pyfeign

Usage

Decorate function with appropriate pyfeign.$method decorator:

@pyfeign.get(url='http://localhost/{id}')
def get_by_id(id: str = Path()) -> Dict[str, Any]:
    """
    Get by ID
    """


obj_dict = get_by_id('id123')

Parameters

  • Path - Argument should be used as a path template variable. Reserved variable names can be used using the name parameter:

    @pyfeign.get(url='http://localhost/{id}')
    def get_by_id(id_val: str = Path(name='id')) -> Dict[str, Any]:
        """
        Get by ID
        """
    
  • Query - Argument should be used as a query parameter, and can be optionally set with a default value if not provided

    @pyfeign.get(url='http://localhost/{id}')
    def get_by_id(id_val: str = Path, 
                  summary: bool = Query(default=False, name='summary_details')) -> Dict[str, Any]:
        """
        Get by ID
    
        get_byt_id('id1', False) == http://localhost/id1?summary_details=False
        """
    
  • Header - Argument will be used as an HTTP Header

  • Cookie - Argument will be used as an HTTP Cookie

  • Body - Argument will be sent as the request body (JSON serialized)

Classes

@pyfeign.Pyfeign(config=Config(base_url='https://postman-echo.com'))
class PostmanEcho:
    @pyfeign.get('/get')
    def get(self, foo1: str = Query(), foo2: str = Query(default='bar2')) -> Dict[str, Any]:
        pass

Responses

If the response function / method is typed with Dict or List, then the response json will be parsed and returned.

If return type is str then the response text will be returned

For either of these responses, the return code is asserted via Response.raise_for_status(), and so an HTTPError will be raised accordingly

Otherwise the full requests.Response object is returned.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfeign-0.1.2.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

pyfeign-0.1.2-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file pyfeign-0.1.2.tar.gz.

File metadata

  • Download URL: pyfeign-0.1.2.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.6 Linux/5.15.0-58-generic

File hashes

Hashes for pyfeign-0.1.2.tar.gz
Algorithm Hash digest
SHA256 518e1a4c0e162b29efe7541ce0d0439b2cfef58281535cc513df49cdc5eb1370
MD5 ec6c3fcf25c6ce352117ec66094e4538
BLAKE2b-256 2684959bc6cb888116dfe20ecc8d7400fedf5dc03cabbd9c302162324a7bdc68

See more details on using hashes here.

File details

Details for the file pyfeign-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pyfeign-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.6 Linux/5.15.0-58-generic

File hashes

Hashes for pyfeign-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 03ff92a741c2171f7faab6ef9b48877833c895364c457fe24bbc5bfe32c1dbb1
MD5 9eded3a7d4523d0ea980d99ea120ef6b
BLAKE2b-256 5f1166363706be92e90e3f23fcbaaafc05341824297a6cd0c1a7955ee2ff2a33

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page