我有一个Vue.js客户端(问题不是 NOT Vue专用)和一个使用HATEOAS范式的Rest API。我有一些可以查看,编辑和创建的程序(当前有名称和时间戳)。因此,存在[BASE_URL] / api / programs端点,并在调用根端点(GET [BASE_URL]/api/
)时返回
如果允许允许,则制作GET [BASE_URL]/api/programs
将返回所有程序和发布新程序的链接。
如果该链接可用,我将显示一个创建按钮。
这已经导致了我的问题。就我而言,我还有另一个Vue组件。因此,如果用户按下按钮,我将不知道新组件中的POST链接。
启动应用程序时的响应(根端点):
GET https://localhost:5001/api/
{
"links": [
{
"href": "https://localhost:5001/api/Programs",
"rel": "all-programs",
"method": "GET"
}
]
}
列出所有程序时的响应:
GET https://localhost:5001/api/Programs
{
"programs": [
{
"id": 1,
"name": "MSR Hard 1 - 22mm",
"createdAt": "2019-05-20T14:44:30.9508437",
"srmSettings": [],
"links": [
{
"href": "https://localhost:5001/api/Programs/1",
"rel": "self",
"method": "GET"
},
{
"href": "https://localhost:5001/api/Programs?id=1",
"rel": "update",
"method": "PUT"
}
]
}
],
"links": [
{
"href": "https://localhost:5001/api/Programs",
"rel": "self",
"method": "GET"
},
{
"href": "https://localhost:5001/api/Programs",
"rel": "create",
"method": "POST"
}
]
}
我现在有两个选择。
第一
我可以将链接传递到创建组件。但是用户可以通过在浏览器中输入[base-url]/new-program
直接导航到创建页面。
在这种情况下,我会遇到以下问题:
第二
在呈现组件时(例如GET https://localhost:5001/api/Programs/init
)发出“ init”请求。这将返回一个初始化的对象(可能预先填充了一些值)以及可用的链接(用于POST的链接),或者返回403-如果不允许用户创建程序,则被禁止。
初始链接而不是创建链接是由GET https://localhost:5001/api/Programs
发送的。如果初始链接可用,则仅显示列表视图中的“创建”按钮。
但这与用户直接导航到该页面时的第一种方法具有相同的缺点。
请与我分享您的想法。我不确定我是否错过了某些东西,或者我不理解该天堂,或者我只是做错了什么:-)
谢谢!
Christoph