#python #api #flask #post #request
#python #API #flask #Публикация #запрос
Вопрос:
недавно я заинтересовался разработкой API, и я попытался отправить изображения в свой API с помощью postman, и это сработало, но когда я попытался отправить запрос API с помощью модуля запроса pythons, это не сработало. мой API, а также мой код запроса ниже. спасибо
======================== Api====================================
class UploadImage(Resource):
def post(self):
parse = reqparse.RequestParser()
parse.add_argument('key', type=str)
parse.add_argument('mode', type=str)
parse.add_argument('image', type=werkzeug.datastructures.FileStorage, location='files', required=True, help='file that you want to send to the API')
args = parse.parse_args()
key= args['key']
mode = args['mode']
if key == 'YourApiKey':
image_file = args['image']
file_name = np.random.randint(1,10000000) # picking a random number for image
image_file.save(f"{file_name}.jpg") # saving the image
if mode == 'label':
data = objectDetection(str(file_name) '.jpg',mode=mode) # detecting the objects in the image
os.remove(f"{file_name}.jpg") #removing to original image
img = Image.fromarray(data, 'RGB')
img.save('img.jpg')
return send_file('img.jpg') # {'status' : 'success'}, 201
if mode == 'classes':
data = objectDetection(str(file_name) '.jpg',mode=mode) # detecting the objects in the image
os.remove(f"{file_name}.jpg") #removing to original image
return {'status' : data}
else:
return {'status' : 'Unauthorized'}, 401
=================================== запрос=================================
import requests
import json
url = 'http://127.0.0.1:5000/upload?key=YourApiKeyamp;mode=label'
data = open('car.jpg','rb').read()
payload = json.dumps({'image': data})
x = requests.post(url, data = payload)
print(x.text)
Ответ №1:
Вам нужно добавить заголовок для Content-Type
.
import requests
import json
url = 'http://127.0.0.1:5000/upload?key=YourApiKeyamp;mode=label'
data = open('car.jpg','rb').read()
payload = json.dumps({'image': data})
headers = {
'Content-Type': 'image/jpg'
}
x = requests.post(url,headers=headers data = payload)
print(x.text)
Вы также можете сгенерировать клиентский код из postman. Генерация клиентского кода
Комментарии:
1. большое вам спасибо, вы не можете поверить, насколько вы мне помогли, спасибо