Python как опубликовать изображение в api

#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. большое вам спасибо, вы не можете поверить, насколько вы мне помогли, спасибо