Làm cách nào để chuyển đổi lệnh curl sang Python?

Thư viện này ra đời khi tôi tham gia một dự án với một nhóm các nhà phát triển không phải Linux, không phải Python. Vì dự án không có tài liệu phù hợp nên nhóm khác thường chia sẻ ví dụ sử dụng API cho tôi dưới dạng lệnh cURL, được tạo từ Postman được sử dụng hàng ngày của họ. Các lệnh cURL đó thường xấu xí, như thế này

curl --location --request POST '//app-staging.dev/api' \
--header 'Content-Type: application/json' \
--data-raw '{
    "userId": "abc-xyz",
    "planAmount": 50000,
    "isPromotion": false,
    "createdAt": "2019-12-13 10:00:00"
}'

Tôi cảm thấy thoải mái hơn với HTTPie [cú pháp ngắn hơn, có đánh dấu và là một ứng dụng Python], vì vậy tôi thường chuyển đổi nó thành HTTPie

http -F app-staging.dev/api userId=abc-xyz planAmount:=50000 isPromotion:=false createdAt='2019-12-13 10:00:00'

Mặc dù Postman có thể tạo HTTPie, nhưng nó thậm chí còn dẫn đến lệnh xấu hơn

printf '{
    "userId": "abc-xyz",
    "planAmount": 50000,
    "isPromotion": false,
    "createdAt": "2019-12-13 10:00:00"
}'| http  --follow --timeout 3600 POST app-staging.dev/api \
Content-Type:'application/json'

Ban đầu, tôi phải thực hiện chuyển đổi thủ công và nhanh chóng cảm thấy mệt mỏi với nó. Tôi đã cố gắng tìm một công cụ chuyển đổi nhưng không thành công. Có một công cụ trực tuyến curl2httpie. trực tuyến, nhưng không thành công với ví dụ trên. Vì vậy, tôi quyết định viết công cụ của riêng mình

Tôi không bận tâm giúp sửa công cụ trực tuyến ở trên, vì nó được viết bằng Go. Hệ sinh thái phong phú của Python, với các thư viện tích hợp này, giúp tôi hoàn thành công việc nhanh chóng

  • bánh mì. Giúp phân tích cú pháp dòng lệnh dưới dạng ngôn ngữ shell, xử lý chuỗi thoát, trích dẫn cho tôi

  • argparse. Trợ giúp phân tích các tùy chọn và đối số cURL. Lưu ý rằng, cú pháp đối số cURL tuân theo kiểu GNU, phổ biến trong thế giới Linux [và Python] nhưng không phổ biến trong thế giới Go [xem hướng dẫn này], vì vậy nó cảm thấy tự nhiên hơn với Python

    Uncurl là một thư viện cho phép bạn chuyển đổi các yêu cầu cuộn tròn thành mã python sử dụng Yêu cầu. Vì trình kiểm tra mạng Chrome có "Sao chép dưới dạng cURL" tiện lợi, nên công cụ này rất hữu ích để tạo lại các yêu cầu trình duyệt trong python

    Khi bạn không chuyển bất kỳ đối số nào để mở cuộn, nó sẽ sử dụng bất kỳ đối số nào trong khay nhớ tạm của bạn làm lệnh cuộn tròn

    Ví dụ

    $ uncurl "curl '//pypi.python.org/pypi/uncurl' -H 'Accept-Encoding: gzip,deflate,sdch' -H 'Accept-Language: en-US,en;q=0.8' -H 'User-Agent: Mozilla/5.0 [Macintosh; Intel Mac OS X 10_8_5] AppleWebKit/537.36 [KHTML, like Gecko] Chrome/33.0.1750.152 Safari/537.36' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' -H 'Cache-Control: max-age=0' -H 'Cookie: foo=bar;' -H 'Connection: keep-alive' --compressed"
    requests.get["//pypi.python.org/pypi/uncurl", headers={
        "Accept-Encoding": "gzip,deflate,sdch",
        "Accept-Language": "en-US,en;q=0.8",
        "User-Agent": "Mozilla/5.0 [Macintosh; Intel Mac OS X 10_8_5] AppleWebKit/537.36 [KHTML, like Gecko] Chrome/33.0.1750.152 Safari/537.36",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Cache-Control": "max-age=0",
        "Connection": "keep-alive",
    }, cookies={
        "foo": "bar",
    }]

    API cơ bản

    import uncurl
    
    print[uncurl.parse["curl '//pypi.python.org/pypi/uncurl' -H 'Accept-Encoding: gzip,deflate,sdch'"]]

    in chuỗi

    'requests.get["//pypi.python.org/pypi/uncurl", headers={
        "Accept-Encoding": "gzip,deflate,sdch",
    }]'

    Bạn cũng có thể truy xuất các thành phần dưới dạng đối tượng python

    >>> import uncurl
    >>> context = uncurl.parse_context["curl '//pypi.python.org/pypi/uncurl' -H 'Accept-Encoding: gzip,deflate,sdch'"]
    >>> context.url
    https://pypi.python.org/pypi/uncurl
    >>> context.headers
    OrderedDict[[['Accept-Encoding', 'gzip,deflate,sdch']]]

    Trên Mac OS, bạn cũng có thể chuyển đầu vào thành đường cong

    pbpaste | uncurl

    Cài đặt

    ________số 8

    Bạn có thể chạy lệnh curl trong Python không?

    Trong Python, cURL chuyển yêu cầu và dữ liệu đến và từ máy chủ bằng PycURL . PycURL hoạt động như một giao diện cho thư viện libcURL trong Python. Hầu hết mọi ngôn ngữ lập trình đều có thể sử dụng API REST để truy cập điểm cuối được lưu trữ trên máy chủ web.

    Làm cách nào để chuyển đổi curl sang mã Java?

    Chuyển đổi lệnh Curl thành yêu cầu HTTP bằng ReqBin . Nhập yêu cầu Curl của bạn, nhấp vào nút Gửi để kiểm tra xem bạn đã nhập đúng lệnh Curl chưa, sau đó chuyển sang tab Raw để xem yêu cầu HTTP được tạo.

    Làm cách nào để chuyển đổi lệnh curl thành yêu cầu HTTP?

    Tạo yêu cầu POST Curl bằng cách chuyển dữ liệu POST bằng tùy chọn dòng lệnh -d hoặc -F . Nhấp vào "Chạy" để thực hiện yêu cầu POST của bạn trực tuyến và xem kết quả. Nhấp vào tab "Thô" ở khung bên trái để xem yêu cầu HTTP được tạo. Nhấp vào tab "Thô" ở khung bên phải để xem phản hồi HTTP của máy chủ.

    Curl có phải là một phần của Python không?

    Trong python, curl là một công cụ để chuyển yêu cầu dữ liệu đến và từ máy chủ bằng PycURL . Công cụ này được sử dụng để kiểm tra API REST, tải xuống tệp, v.v.

Chủ Đề