3

画像を投稿して、REST API で処理しようとしています。バックエンドにファルコンを使用していますが、データを投稿および受信する方法がわかりませんでした。

これは私が現在ファイルを送信する方法です

img = open('img.png', 'rb')
r = requests.post("http://localhost:8000/rec",
files={'file':img},
data = {'apikey' : 'bla'})

ただし、Falcon リポジトリでは、Falcon はデータを送信するための HTML フォームをサポートしていないと述べています。代わりに、POST された画像データと上記のように送信されたものを区別しない POST および PUT されたデータの全範囲を対象としています。

最終的には、Falcon によって作成されたと思われる REST API を使用して画像を送信し、受信するための適切な回避策を学びたいと思います。いくつかの指針を教えていただけますか?

4

1 に答える 1

0

これには、次のアプローチを使用できます。

ファルコン API コード:

import falcon
import base64
import json

app = falcon.API()
app.add_route("/rec/", GetImage())

class GetImage:

    def on_post(self, req, res):

        json_data = json.loads(req.stream.read().decode('utf8'))
        image_url = json_data['image_name']
        base64encoded_image = json_data['image_data']
        with open(image_url, "wb") as fh:
            fh.write(base64.b64decode(base64encoded_image))

        res.status = falcon.HTTP_203
        res.body = json.dumps({'status': 1, 'message': 'success'})

API 呼び出しの場合:

import requests
import base64

with open("yourfile.png", "rb") as image_file:
    encoded_image = base64.b64encode(image_file.read())

r = requests.post("http://localhost:8000/rec/", 
                  data={'image_name':'yourfile.png',
                        'image_data':encoded_image
                       }
                 )
print(r.status_code, r.reason)

これが役立つことを願っています。

于 2017-01-16T12:26:14.827 に答える