当前位置: 首页 > 知识库问答 >
问题:

如何在不使用动词的情况下设计RESTful API?

牛智志
2023-03-14

这个问题与“浏览器是否使用非RESTful API”或“令牌授权头”无关。这个问题与API-Design(外观标记)、良好实践和身份验证(/login)有关,而不是授权(令牌标头)。

我知道如何制作API,HTTP协议如何工作,什么是RPC,什么是REST。如果你读了我的问题,你可能会看到我理解其中的原理。请仔细阅读我的问题。不要只看题目本身然后回答。你需要上下文才能回答。

我试图设计一个不使用动词的REST API。它变得越来越具有挑战性,因为我正在处理登录/身份验证之类的案例,比如控制器。

GET /authenticate
GET /users (noun) REST
POST /register (verb) RPC
GET /logout (verb) RPC

这可能看起来像是一个非常语义的问题,如果是这样,我希望你告诉我,我可能认为这是一个愚蠢的方式,这样我就可以停止关心这个了。但是在我看来,当一个API中明显有动词时,却认为它是RESTfull,这真的很奇怪,所以这就是为什么我要征求您的意见。

否则,如果有一种更好的更RESTful的方法来执行身份验证,我希望得到一些建议。因为在Google上寻找这个主题的答案很麻烦,除了人们说“不要在RESTful API中使用动词”之外,这在这种情况下是令人困惑的。

这可能不是您可能见过的其他一些问题的重复,比如这个问题,如何创建没有动词的REST URL?

我发现这也不是一个重复的,但实际上非常相似的REST API登录模式用户询问哪一个是合适的RESTful设计,但他显然没有得到任何回答我所问的问题的答案。这就是“如果您的RESTful设计中有一个/login路径,那么该设计是否仍然是RESTful”的语义(愚蠢与否)。答案是关于授权,而不是身份验证。

我提出这一免责声明是因为我过去的一些问题被否决了,因为它们被认为是重复的,而实际上它们只是相似的,即使我从未得到答复,否决也从未被删除。虽然,如果你找到一个适当的副本,我会真的很高兴接受它。只是请不要粗鲁地扔一个重复的东西,唯一重复的东西是标题。

共有1个答案

东郭京
2023-03-14

一个具有本地登录的REST客户机和服务器示例如下:

服务器API:

  • get/users/currentuser
    返回描述当前用户(显示名称、电子邮件地址、主题首选项、密码过期日期等)的JSON文档
    1. 验证授权中的用户名和密码:基本标头,设置上下文。如果无效,则抛出401
    2. 检索用户信息,序列化,返回
    null
    null
 类似资料:
  • 问题内容: 如果我要使用DefaultServeMux(我将其指定为ListenAndServe的第二个参数来指定),那么我可以访问,您可以在Go Wiki的以下示例中看到该: 在当前代码中,我无法使用DefaultServeMux,即我将自定义处理程序传递给ListenAndServe 因此,我没有内置的代码。但是,我必须将一些授权代码修改为需要类似的授权代码。例如,如果我一直在使用Defaul

  • 我有一个具有两个属性的dynamoDB表: A: 主分区键 B: 主排序键 我想使用属性B查询这个表,因为我不知道A的值。可以这样做吗? 是否可以将B设为GSI(全局二级索引),如何使用B查询表,因为B已经是排序键。

  • 问题内容: 我有和。 我的Linux Mint 12上有很多错误,我只是重新安装了它,所以我想再次从头开始安装所有内容。 这是我的错误之一。我在那里收到一个有趣的答案: 停止使用su和sudo运行virtualenv。 你需要以普通用户身份运行virtualenv。 你已经使用sudo创建了virtualenv,这就是为什么你会收到这些错误的原因。 那么如何不使用安装呢?我可以使用还是不使用?还是

  • 问题内容: 我想在不使用设置器的情况下将值插入变量。如果有可能怎么办。 这是一个例子 现在我有一个包含,和的函数。 我试图使用一种通用方法将值设置为Object(objectOfClass),而值我已经在相应的variable()中通过了()。 问题答案: 此代码未经测试。你可以试试看 要导入的类 方法

  • 本文向大家介绍如何在不使用HTML的情况下创建网站?,包括了如何在不使用HTML的情况下创建网站?的使用技巧和注意事项,需要的朋友参考一下 如果您不了解HTML或CSS,并且想创建一个网站,那么不用担心,您可以轻松创建网站,而无需编写一行HTML代码。 以下是一些无需编写任何HTML或代码行即可构建网站的方法: 网站构造函数 当您购买网站托管计划时,托管公司将为您提供免费的网站构建器选项,以轻松创

  • 问题内容: 在Mongoose的早期版本(针对node.js)中,可以选择使用它而不定义架构 但是在当前版本中,“ noSchema”功能已被删除。我的架构可能会经常更改,并且实际上不适合已定义的架构,因此,是否有一种新的方式在猫鼬中使用无架构的模型? 问题答案: 我想这就是您要寻找猫鼬严密的东西 选项:严格 严格选项(默认情况下启用)可确保未在架构中指定的添加到模型实例的值不会保存到数据库中。

  • 问题内容: 我已经在Swift 2中使用了这种方法 但是不知道如何在不使用 NSDictionary(contentsOfFile:path)的* 情况下在Swift3中读取plist * 问题答案: Swift的本机方法是使用 ~~~~ 您还可以使用类型强制转换: 但您明确地写道: 不使用NSDictionary(contentsOf … 基本上,不要在Swift中不进行强制转换而使用,您将丢弃

  • 有没有一种方法可以下载Docker映像/容器,例如,使用Firefox,而不使用内置的。 我被公司防火墙和代理屏蔽了,我无法通过它得到一个洞。 我的问题是我不能使用Docker获取图像,即Docker保存/拉取和其他Docker提供的功能,因为它被防火墙阻止了。