gpt4 book ai didi

java - 使现有 API 更加 RESTful

转载 作者:行者123 更新时间:2023-12-02 01:06:38 28 4
gpt4 key购买 nike

我有一个现有的 API,我正在尝试使其更加 RESTful。

该应用程序涉及一名送礼者和一名受赠者。送礼者为受礼者购买一些东西,并通过 Whatsapp 发送礼物链接。

在为受赠者创建用户帐户之前,我首先通过将该人与电话号码绑定(bind)来进行一些验证。我有 2 个端点:

/sendSmsCode 
/verifyUser

第一个端点将短信代码发送到电话号码,第二个端点接收短信代码并验证其正确性。 /verifyUser然后返回一个 session token 。然后,该 session token 用于接受礼物并创建用户。

显然这些不是 RESTful 端点。但现阶段尚未创建用户,因此我无法执行类似 /users/{id}/send-sms 的操作(我知道它不会太安静,因为它包含一个动词)。

有什么建议吗?

最佳答案

我本来想发表评论,但评论太长了,所以我将其作为答案发布(尽管它可能无法直接回答您的问题)。

Obviously these are not RESTful endpoints.

REST 是一种架构风格,而不是设计 URI 的手册。仅仅强调 REST 本身不关心 URI 拼写是不够的,只要 URI 符合 RFC 3986 .

要被视为 RESTful,应用程序必须遵循chapter 5 中定义的一组约束。罗伊·托马斯·菲尔丁的论文。

您在问题中提到使用 session token 。如果 session 状态保存在服务器上,那么它根本就不是 RESTful。 REST 应用程序应该是 stateless ,其中一个请求包含服务器可以理解的所有必需信息,而不利用服务器上存储的 session 状态。

I can't do something like /users/{id}/send-sms (which I know wouldn't be too RESTful either given it includes a verb).

REST 架构风格的一个重要概念是资源及其标识符

URI(或U通用R资源I标识符)旨在标识资源而不是表达对资源的操作。对资源执行的操作可以通过请求方法来表达。请求方法是请求语义的主要来源,指示客户端发出此请求的目的以及客户端期望成功的结果。

为了正确地标识资源,使用名词是很自然的选择(因为动词是通过 HTTP 方法来表达的)。但并不强制只使用名词。只要您遵守 REST 约束,您肯定可以设计一个带有一些动词的 RESTful API(并且可能使用 POST 将数据发送到此类端点)。

关于java - 使现有 API 更加 RESTful,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57723643/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com