添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Skip to main content

Python aiohttp: How to Send POST Requests

How to Send POST Requests With Python aiohttp

To send POST requests with Python aiohttp first create a session object using the aiohttp.ClientSession() method and then use the post() method on that session object. Next, add the POST body and Content-Type using the body and headers parameters.


import aiohttp
import asyncio

async def post_request():
async with aiohttp.ClientSession() as session:
response = await session.post(url="https://httpbin.org/post",
data={"key": "value"},
headers={"Content-Type": "application/json"})
print(await response.json())

asyncio.run(post_request())

In this guide for The Python Web Scraping Playbook , we will look at how to make POST requests with the Python aiohttp library .

In this guide we will walk you through the most common ways of sending POST requests with Python aiohttp:

  • POST JSON Data Using Python aioHTTP
  • POST Form Data Using Python aioHTTP
  • Configuring Data Types
  • Let's begin...

    POST JSON Data Using Python aiohttp

    A common scenario for using POST requests is to send JSON data to an API endpoint, etc. Doing this with Python aioHTTP is very simple.

    Here we will use Python aiohttp's Session functionality to send POST requests.

    We need to use aiohttp.ClientSession() to create a new instance of the ClientSession class. The async with statement is used to create a context manager for the aiohttp.ClientSession() to manage the life cycle of the session object. Next, we make a POST request using the session.post() method. Then, We simply need to add the data to the request using the json parameter of the POST request:


    import aiohttp
    import asyncio

    async def post_request():
    url = "https://httpbin.org/post"
    data = {"key": "value"}

    async with aiohttp.ClientSession() as session:
    response = await session.post(url, json=data)
    print(await response.json())

    asyncio.run(post_request())

    The aiohttp library will automatically encode the data as JSON and set the Content-Type header to application/json .

    This approach can be simpler and more concise than manually encoding the data and setting the headers. Additionally, it may offer some performance benefits, as the Python aiohttp library can use a more efficient encoding method for JSON data.

    POST Form Data Using Python aioHTTP

    Another common use case for using POST requests is to send form data to an endpoint.

    We simply just need to add the data to the request using the data parameter of the POST request:


    import aiohttp
    import asyncio

    async def post_request():
    url = "https://httpbin.org/post"
    data = {"key": "value"}

    async with aiohttp.ClientSession() as session:
    response = await session.post(url, data=data)
    print(await response.text())

    asyncio.run(post_request())

    The aiohttp library will automatically encode the data as JSON and set the Content-Type header to application/x-www-form-urlencoded so you don't have to set any headers.

    Configuring Data Types