Urllib error when trying to use list inside a form-data
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 52/100
Hướng nghiên cứu
Tái hiện lỗi bằng đặc tả OpenAPI và mẫu được cung cấp, sử dụng ApiClient và DefaultApi.submit_post, tập trung vào SubmitPostRequestInput và việc xử lý multipart/form-data. Theo dõi quá trình tuần tự hóa request được tạo cho đến urllib3, sau đó xác minh rằng một danh sách các giá trị SubmitItem được chấp nhận mà không gặp bytes-like-object TypeError.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
I have an API that accepts a JSON list inside form-data, so the request is expected to look like this:
input=[{...}, {...}]
However, when I pass the list to the generated client, the request fails with the following error.
Could you please take a look and let me know what might be going wrong here?
from openapi_client import ApiClient, Configuration, DefaultApi, SubmitPostRequestInput, SubmitItem
config = Configuration()
config.host = "https://api.example.com"
api_client = ApiClient(configuration=config)
api_instance = DefaultApi(api_client)
request_input = SubmitPostRequestInput(
[
SubmitItem(flag1=True, flag2=False),
SubmitItem(flag1=False, flag2=True)
]
)
api_instance.submit_post(input=request_input, inlcude_ses=True)
With the generated client and the code above I am getting the following error
File c:\Users\1592\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\_request_methods.py:264, in RequestMethods.request_encode_body(self, method, url, fields, headers, encode_multipart, multipart_boundary, **urlopen_kw)
259 raise TypeError(
260 "request got values for both 'fields' and 'body', can only specify one."
261 )
263 if encode_multipart:
--> [264](file:///C:/Users/1592/AppData/Local/Programs/Python/Python311/Lib/site-packages/urllib3/_request_methods.py:264) body, content_type = encode_multipart_formdata(
265 fields, boundary=multipart_boundary
266 )
267 else:
268 body, content_type = (
269 urlencode(fields), # type: ignore[arg-type]
270 "application/x-www-form-urlencoded",
271 )
File c:\Users\1592\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\filepost.py:[81](file:///C:/Users/1592/AppData/Local/Programs/Python/Python311/Lib/site-packages/urllib3/filepost.py:81), in encode_multipart_formdata(fields, boundary)
79 writer(body).write(data)
80 else:
---> 81 body.write(data)
83 body.write(b"\r\n")
85 body.write(f"--{boundary}--\r\n".encode("latin-1"))
TypeError: a bytes-like object is required, not 'list'
Please use the below spec file and above sample snippet to reproduce the issue
OpenAPI Spec File
openapi: 3.0.3
info:
title: Simple Form Data API
version: 1.0.0
paths:
/submit:
post:
summary: Submit form data with flags
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
input:
oneOf:
- $ref: '#/components/schemas/SubmitItem'
- type: array
items:
$ref: '#/components/schemas/SubmitItem'
inlcude_ses:
type: boolean
responses:
'200':
description: Successful submission
components:
schemas:
SubmitItem:
type: object
properties:
flag1:
type: boolean
flag2:
type: boolean
Desktop (please complete the following information):
- OS: windows
- Python Version: 3.11
- openapi-generator version - 7.20.0-SNAPSHOT (Docker)
- Ngôn ngữ chính
- Python
- Star
- 2k
- Fork
- 293
- Merge trung bình
- 34 phút
- Pull request đã merge (30 ngày)
- 1
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của openapi-generators/openapi-python-client
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 72/100
openapi-generators/openapi-python-client#1451 · 1 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 52/100
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 64/100
openapi-generators/openapi-python-client#1435 · 1 bình luận ·
Tất cả issue của openapi-generators/openapi-python-client
Issue tương tự
-
🐛 Bug 🔔 Pending processing
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
jumpserver/jumpserver#17584 ·
-
link-check link-check:sphinx-theme
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
qgis/QGIS-Documentation#11275 ·
-
bug priority:normal ready-for-dev
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
OpenHands/extensions#626 · 1 bình luận ·
-
Change observation tooltip text Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 90/100
CSCfi/sd-search-api#39 ·