python - FastAPI {"detail":"不允许的方法"}
问题描述
我正在为我的 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 上对其进行测试时,它工作得很好,如图所示,即它显示了概率和预测。
当我去请求 URL 时,由 GUI 提供,即http://127.0.0.1:8000/predict?data=hello
(test data is hello) 它给了我错误。
{"detail":"Method Not Allowed"}
在我的终端上,错误消息是
INFO: 127.0.0.1:42568 - "GET /predict?data=hello HTTP/1.1" 405 Method Not Allowed
解决方案
端点的方法定义为POST
( @app.post('/predict')
)。当您从浏览器调用 URL 时,HTTP 方法是GET
.
一个简单的解决方案是将端点方法更改为GET
via @app.get
。
但这很可能会违反 REST-API 端点的命名方式以及何时使用什么 HTTP 方法。一个好的起点是https://restfulapi.net/resource-naming/。
或者,也许您正在实施 RPC(远程过程调用)?比它也可以不同。
推荐阅读
- html - HTML emble autostart="1" 但不能自动;
- c# - C# 仅在选定的派生类中使用基类方法
- mysql - phpMyAdmin 显示 404 Not Found (Ubuntu 18.04 Nginx)
- postgresql - PostgreSQL 检查或触发
- sql - Postgresql 计数除以计数
- docker - docker: MISCONF Redis 配置为保存 RDB 快照
- asp.net - 将控件属性绑定到表达式
- ios - 应用 Frame 修饰符时出现 ScrollView 布局错误
- javascript - 如何在不点击的情况下检索属性 data-id 值
- html - Woocommerce 简短描述保留 html 标签