如何修复 python POST 对 Twilio 请求的“不支持的媒体类型”错误
How to fix 'Unsupported media type" error on python POST request to Twilio
我一直在关注 Twilio 的 Quickstart page for their Functions API。
我卡在了应该手动上传函数JS文件的部分。
他们的 POST 示例使用 cURL 和 node.js 但我使用的是 Python 3.6:
# Manually upload the subscription function file
upload_url = f'https://serverless-upload.twilio.com/v1/Services/{sub_service_sid}/Functions/{sub_function_sid}/Versions'
function_request = requests.post(
upload_url,
files = {'subscription_function_file': open('subscriptionFunction.js', 'rb')},
auth = (account_sid, auth_token),
headers = {
'content-type': 'application/javascript',
'path': '/subscription-function',
'visibility': 'public'
}
)
在这两个示例中,它们都将内容类型声明为 application/javascript
。但是,当我这样做时出现此错误:
{"status":415,"message":"Unsupported media type","detail":"The server does not support the media type transmitted in the request.","code":20415,"moreInfo":"https://www/twilio.com/docs/errors/20415"}
那个 URL 抛出一个 404
所以我去挖掘 Twilio 的 Error Dictionary but that code is not listed. Furthermore, application/javascript
is absent from their supported media types 页面。
我上传的文件有误吗?还是他们的教程错了?
这里是 Twilio 开发人员布道者。
我认为您可能已将某些 curl 请求翻译成使用 requests
发出的请求的错误部分,我认为这是导致问题的原因。您不希望将请求类型设置为 application/javascript
想要成为您正在上传的文件的类型。您可以将其设置为 files
元组的一部分。
您不想发送其他数据位,Path
和 Visibility
也作为 headers,它们应该是 data
的一部分,所以它们成为请求的一部分 body.
试试这样的方法:
upload_url = f'https://serverless-upload.twilio.com/v1/Services/{sub_service_sid}/Functions/{sub_function_sid}/Versions'
files = { 'Content': ('subscriptionFunction.js', open('subscriptionFunction.js', 'rb'), 'application/javascript') }
function_request = requests.post(
upload_url,
files = files,
auth = (account_sid, auth_token),
data = {
'Path': '/subscription-function',
'Visibility': 'public'
}
)
如果有帮助请告诉我。
我一直在关注 Twilio 的 Quickstart page for their Functions API。
我卡在了应该手动上传函数JS文件的部分。
他们的 POST 示例使用 cURL 和 node.js 但我使用的是 Python 3.6:
# Manually upload the subscription function file
upload_url = f'https://serverless-upload.twilio.com/v1/Services/{sub_service_sid}/Functions/{sub_function_sid}/Versions'
function_request = requests.post(
upload_url,
files = {'subscription_function_file': open('subscriptionFunction.js', 'rb')},
auth = (account_sid, auth_token),
headers = {
'content-type': 'application/javascript',
'path': '/subscription-function',
'visibility': 'public'
}
)
在这两个示例中,它们都将内容类型声明为 application/javascript
。但是,当我这样做时出现此错误:
{"status":415,"message":"Unsupported media type","detail":"The server does not support the media type transmitted in the request.","code":20415,"moreInfo":"https://www/twilio.com/docs/errors/20415"}
那个 URL 抛出一个 404
所以我去挖掘 Twilio 的 Error Dictionary but that code is not listed. Furthermore, application/javascript
is absent from their supported media types 页面。
我上传的文件有误吗?还是他们的教程错了?
这里是 Twilio 开发人员布道者。
我认为您可能已将某些 curl 请求翻译成使用 requests
发出的请求的错误部分,我认为这是导致问题的原因。您不希望将请求类型设置为 application/javascript
想要成为您正在上传的文件的类型。您可以将其设置为 files
元组的一部分。
您不想发送其他数据位,Path
和 Visibility
也作为 headers,它们应该是 data
的一部分,所以它们成为请求的一部分 body.
试试这样的方法:
upload_url = f'https://serverless-upload.twilio.com/v1/Services/{sub_service_sid}/Functions/{sub_function_sid}/Versions'
files = { 'Content': ('subscriptionFunction.js', open('subscriptionFunction.js', 'rb'), 'application/javascript') }
function_request = requests.post(
upload_url,
files = files,
auth = (account_sid, auth_token),
data = {
'Path': '/subscription-function',
'Visibility': 'public'
}
)
如果有帮助请告诉我。