Правильная архитекрура REST API

У меня возник вопрос при написании API на FAST API. Вот у меня есть api, который возвращает данные из бд в json формате. После я хочу сделать фронт для приложения и как связать эти две части так, что они следовали RESTFUL принципу "Отделение клиента от сервера"?

Допустим, у меня есть адрес test.com/api/products при отправления запроса на который, нам возвращается ответ в виде json. Теперь я хочу чтобы по адресу test.com/products мне возвращалась html страница с данными.

Как правильно разделить эти части?

Пример:

Вот есть api router, он возвращает json.

@router.get("/api/products")  
async def get_operations(operation_type: str, session: AsyncSession = Depends(get_async_session)):  
    query = select(operation).where(operation.c.type == operation_type)  
    result = await session.execute(query)  
    return {  
        "status": "success",  
        "data": result.mappings().all(),  
        "detail": None  
    }  

Я связывал это так.

@router.get("/products", response_class=HTMLResponse)  
def get_page(request: Request, operations=Depends(get_operations)):  
    return templates.TemplateResponse("index.html", {"request": request, "data": operations})

Но я не понимаю, является ли это корректным разделением. Может мне нужно создавать два отдельных приложения, и во фронт-приложение отправлять запросы по адресу /api/products, чтобы получить json, который впоследствии будет отправляться на собранной html страницы. Эта идея мне кажется чересчур сложной, но может это и есть разделение..

Буду рад, если поможете разобраться мне с данным вопросом!


Ответы (0 шт):