FastAPI {"detail":"メソッドは許可されていません"} 質問する

FastAPI {

ML モデルに FAST API を使用しています。

パイプラインがあります。

lr_tfidf = Pipeline([('vect', tfidf),
                     ('clf', LogisticRegression(penalty='l2'))])


Fast APIでは、予測して結果をAPIとして表示したい場合、私のコードは

app = FastAPI()


@app.post('/predict')
def predict_species(data: str):
    data = np.array([data])

    prob = lr_tfidf.predict_proba(data).max()
    pred = lr_tfidf.predict(data)
    return {'Probability': f'{prob}', 
            'Predictions':f'{pred}'}

チュートリアルからコピーしました。FASTAPI で GUI 上でテストすると、画像に示すように、確率と予測が表示され、うまく動作します。

ここに画像の説明を入力してください

GUI によって提供される URL http://127.0.0.1:8000/predict?data=hello(テスト データは hello) をリクエストすると、エラーが発生します。

{"detail":"Method Not Allowed"}

私のターミナルでは、エラーメッセージは

INFO:     127.0.0.1:42568 - "GET /predict?data=hello HTTP/1.1" 405 Method Not Allowed

ベストアンサー1

エンドポイントのメソッドはPOST( @app.post('/predict')) として定義されています。ブラウザから URL を呼び出す場合、HTTP メソッドは ですGET

簡単な解決策は、エンドポイント メソッドをGETviaに変更することです@app.get

しかし、これはREST-APIエンドポイントの命名方法やどのHTTPメソッドをいつ使用するかというルールに違反する可能性が高いです。良い出発点はhttps://restfulapi.net/resource-naming/

あるいは、RPC (リモート プロシージャ コール) を実装しているのでしょうか? その場合は、異なる可能性もあります。

おすすめ記事