带有 uvicorn 的 FastAPI 出现 404 Not Found 错误
FastAPI with uvicorn getting 404 Not Found error
我正在尝试(失败)建立一个简单的 FastAPI 项目并 运行 它与 uvicorn。
这是我的代码:
from fastapi import FastAPI
app = FastAPI()
app.get('/')
def hello_world():
return{'hello':'world'}
app.get('/abc')
def abc_test():
return{'hello':'abc'}
这是我从终端运行得到的:
PS C:\Users\admin\Desktop\Self pace study\Python\Dev\day 14> uvicorn server2:app
INFO: Started server process [3808]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: 127.0.0.1:60391 - "GET / HTTP/1.1" 404 Not Found
INFO: 127.0.0.1:60391 - "GET /favicon.ico HTTP/1.1" 404 Not Found
如您所见,我收到 404 未找到。可能是什么原因?一些与网络相关的东西,可能 firewall/vpn 阻止了此连接或其他东西?我对此很陌生。
提前致谢!
您需要使用这样的装饰器:@app.get('/')
。看看 FastAPI Docs.
此外,看一下装饰器的一般工作方式,以更好地了解幕后的工作方式。
一些资源供您使用:
one of many articles I was able to find
another SO question
到现在为止,您可能已经明白了。为了获得 MWE 运行ning,您将在每个函数定义之前使用微服务的端点 decorators。以下代码段应该可以解决您的问题。
它假定您具有以下结构:
.
+-- main.py
+-- static
| +-- favicon.ico
+-- templates
| +-- index.html
from fastapi import FastAPI
from fastapi.responses import HTMLResponse, FileResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import os
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
@app.get('/')
def hello_world():
return{'hello':'world'}
@app.get('/favicon.ico')
async def favicon():
file_name = "favicon.ico"
file_path = os.path.join(app.root_path, "static")
return FileResponse(path=file_path, headers={"Content-Disposition": "attachment; filename=" + file_name})
@app.get('/abc')
def abc_test():
return{'hello':'abc'}
所以您已经准备好 运行 您的第一个使用 FastAPI 默认 ASGI 服务器的应用程序。
(env)$: uvicorn main:app --reload --host 0.0.0.0 --port ${PORT}
我正在尝试(失败)建立一个简单的 FastAPI 项目并 运行 它与 uvicorn。 这是我的代码:
from fastapi import FastAPI
app = FastAPI()
app.get('/')
def hello_world():
return{'hello':'world'}
app.get('/abc')
def abc_test():
return{'hello':'abc'}
这是我从终端运行得到的:
PS C:\Users\admin\Desktop\Self pace study\Python\Dev\day 14> uvicorn server2:app
INFO: Started server process [3808]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: 127.0.0.1:60391 - "GET / HTTP/1.1" 404 Not Found
INFO: 127.0.0.1:60391 - "GET /favicon.ico HTTP/1.1" 404 Not Found
如您所见,我收到 404 未找到。可能是什么原因?一些与网络相关的东西,可能 firewall/vpn 阻止了此连接或其他东西?我对此很陌生。 提前致谢!
您需要使用这样的装饰器:@app.get('/')
。看看 FastAPI Docs.
此外,看一下装饰器的一般工作方式,以更好地了解幕后的工作方式。
一些资源供您使用:
one of many articles I was able to find
another SO question
到现在为止,您可能已经明白了。为了获得 MWE 运行ning,您将在每个函数定义之前使用微服务的端点 decorators。以下代码段应该可以解决您的问题。 它假定您具有以下结构:
.
+-- main.py
+-- static
| +-- favicon.ico
+-- templates
| +-- index.html
from fastapi import FastAPI
from fastapi.responses import HTMLResponse, FileResponse
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import os
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates")
@app.get('/')
def hello_world():
return{'hello':'world'}
@app.get('/favicon.ico')
async def favicon():
file_name = "favicon.ico"
file_path = os.path.join(app.root_path, "static")
return FileResponse(path=file_path, headers={"Content-Disposition": "attachment; filename=" + file_name})
@app.get('/abc')
def abc_test():
return{'hello':'abc'}
所以您已经准备好 运行 您的第一个使用 FastAPI 默认 ASGI 服务器的应用程序。
(env)$: uvicorn main:app --reload --host 0.0.0.0 --port ${PORT}