我正在努力寻找答案(也许是因为我没有正确提出问题)......
我正在构建 API 以公开我正在创建的基本社交网络服务的资源。我的理解是 API 中 URL 的结构本质上是一个层次结构,类似于目录的结构。我认为这意味着我可以有多个端点来访问相同的资源或资源链接集合。例如:
我有一个端点
www.domain.api.org/users/{:uid}/posts
这将返回用户发送的所有帖子或用户被标记的所有帖子。看起来没问题,但是如果我有一个端点,例如:
www.domain.api.org/posts
当使用 http GET 命中时,将返回所有公开帖子(即所有用户的帖子以及他的朋友和公开帖子)。
不同之处在于第一个 URL 指向用户拥有的资源,而第二个 URL 指向公共资源(当然包括用户发布的内容)这些是可以的还是我这样做是错误的/不太明智的方式?
重申一下,我可以有多个端点指向同一资源的不同上下文/视图吗?
我正在 node.js 中构建一个 rest API。我遵循一般的 ddd 架构,即存储库、域模型、实体、值对象等。我选择 montodb 来满足我的持久性需求,并使用 mongoose 与 dB 引擎进行交互。
在 mongoose 中,我们从定义的模式创建模型。我想弄清楚如何将我的域模型与猫鼬模型分开。我想实现值对象,但我不知道如何使用猫鼬模型来做到这一点。
我无法在任何地方找到有关如何执行此操作的任何信息。我想知道是否我会建议。我可以向猫鼬模型添加方法,所以我猜它充当了域模型。如果是这种情况,那么我如何实现值对象?
我正在为在线拍卖服务创建一个新的 REST/超媒体 API。
我将此作为练习以更好地理解领域驱动设计方法,因为在大多数情况下它似乎是一种很好的方法。
我的一些实体的示例是:Item、Listing、Bid、Purchase、BidHistory 等。我将 Listing 实体标识为一个聚合根,我计划通过它来管理 Bid、Item 等。
据我所知,聚合根的概念适用于我的持久性/域层,不应该是我的视图层的问题(在我的例子中是 JSON 或 XML 资源表示)。
是这种情况吗?如果是这样,这是否意味着通过 REST API 中的 URI 端点公开非聚合根资源仍然可以,或者我是否“被限制”为仅通过我的 API 端点公开聚合根?
我的想法是聚合根位于持久性对象的领域中,它在概念上与域模型分离,因此我应该能够公开两个 URI,例如:
GET /api/v1/listing/465489
Run Code Online (Sandbox Code Playgroud)
和
GET /api/v1/listing/465489/item
Run Code Online (Sandbox Code Playgroud)
不管 Listing 是否是 Item 的聚合根。
我在这里是正确的还是需要在开始实现任何代码之前调整我对此的理解?
architecture rest domain-driven-design data-modeling aggregateroot
我正在尝试实现基本用户注册RESTful api.我有一个html表单registerform.html,deregisterform.html,users.php,register.php和deregister.php,它们都粘贴在下面.
当我在浏览器中访问registerform.html时,我可以填写详细信息,users.php脚本会收到一个POST请求,并回显一个json响应,显示刚刚添加的用户的id号.我的问题是,当我使用deregister表单时,users.php脚本应该重新发送DELETE请求,但实际上是获取GET请求.我一直在寻找这个问题的答案,但我找不到解决方案.
registerform.html
<form action="users.php" method="POST">
Username: <input type="text" name="uname" /><br />
FirstName: <input type="text" name="fname" /><br />
Last Name: <input type="text" name="lname" /><br />
Date of Birth: <input type="date" name="dob" /><br />
Telephone: <input type="mob" name="tel" /><br />
Email: <input type="email" name="email1" /><br />
Confirm Email: <input type="email" name="email2" /><br />
Password: <input type="password" name="pass1" /><br />
Confirm Password: <input type="password" name ="pass2" /><br />
<input type="submit" value="Register" name="sub" />
<br/><A HREF="login.php">Already Registered? Login Here</A><br/>
</form> Run Code Online (Sandbox Code Playgroud)
deregisterform.html
rest ×3
api ×1
architecture ×1
endpoint ×1
html ×1
http ×1
http-delete ×1
javascript ×1
mongodb ×1
mongoose ×1
node.js ×1
php ×1
resources ×1
url ×1