问题标签 [httpverbs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
60 浏览

rest - 微软 Azure 多媒体服务 REST API 正确性存疑

Azure API 声称是 REST API。我在 REST 中的模式和示例实现和动词中发现了它,当在他们的(假定的)REST API 参考中检查它时,他们似乎发明了一个新动词CancelJob并通过 HTTP 改变内部状态GET

这似乎与最佳实践相矛盾,是否应该使用 Jobs资源来实现,DELETE或者这样做是否正确?

甚至?

0 投票
2 回答
3140 浏览

wcf - CORS 请求预检请求,以用户代码结尾

我有一组在内部接口上运行的 WCF Web 服务,这些服务由许多其他网站(也仅限内部)调用。域名匹配,只是端口号不同。

我正在向这些 Web 服务发出 AJAX POST 请求,因为它们在技术上不是同一个来源(不同的端口),所以我正在使用 CORS。

在 IE 中一切都很好,(因为我相信 IE 不会将端口视为不同的来源)但是 Opera 和 Firefox 都会发送预检 OPTIONS 请求。

我已将 Web 服务配置为通过 web.config 文件接受这些请求:

我还在我的服务上设置了接口以接受任何 HTTP 动词:

然而,这会导致底层服务被调用,并且由于它没有找到它在 POST 请求中期望的任何细节,以标准的“你发送了一些错误”的响应。

如果我将服务更改为仅接受 POST 请求 - 这实际上是它会通过以下方式以任何相同的方式响应的唯一响应:

然后预检 OPTIONS 得到“405 - Method not allowed”响应。

我究竟做错了什么?我是否应该配置我的服务以回复 OPTIONS 请求,如果是这样,正确的响应是什么?

我假设我可以在服务中获取请求类型并回复 200 - 好的,如果动词是 OPTIONS 然后重新发送实际的 POST - 但是如果我手动执行此操作,浏览器肯定会再次发送 OPTIONS 作为这是一个新的要求。

编辑:

我刚刚发现这篇文章,关于删除 WEBDAV 处理程序: CORS 405 (Method Not Allowed)

但这没有帮助。

还有一篇关于将 OPTIONSHttpVerb 处理程序移到列表顶部并赋予它“读取”权限的帖子,但这也没有帮助。

编辑 2:实际上移动 OPTIONSHttpVerb 确实有帮助,它不再调用 Web 服务,但 IIS 确实响应 200 - OK。但是,此响应仍会出现在浏览器中的客户端代码中,因此无济于事。

选项响应

0 投票
0 回答
237 浏览

rest - 如何处理 GET 请求和(不)更改应用程序状态?

这是关于 GET 方法的一般问题。

想象一下,我需要存储用户选择的最后一个分页大小:

浏览产品列表当然是 GET 请求,更改分页大小也是 GET 请求(我们只更改size参数):

每次用户更改尺寸时,我都需要在后端存储新尺寸

如何处理GET不应该改变状态的事实?发出查询(从而改变应用程序的状态)对我来说是错误的。有没有其他选择?

GET 请求指定资源的表示。使用 GET 的请求应该只检索数据并且应该没有其他效果。

0 投票
1 回答
412 浏览

symfony1 - Symfony 1.4 中的路由:有没有办法允许 sf_method = OPTIONS 用于预检 HTTP 请求

你们都可能知道浏览器在某些情况下会执行预检 HTTP 请求: https ://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

我的 Web 应用程序仍在 Symfony1 上。我想实现一个 RESTful 服务,因此使用 Symfony 路由来允许特定的 HTTP 请求方法,如 GET 或 POST ( http://symfony.com/legacy/doc/reference/1_4/en/10-Routing#chapter_10_sub_sf_method )。

例子:

在我看来,不能将 OPTIONS 请求定义/处理为 sf_method 值。因为如果我的想法是正确的,我找不到任何信息,所以我想知道我是否正确,或者我也找不到解决方案。

提前致谢!

0 投票
2 回答
568 浏览

c# - 方法名称中的隐式动词

如果我创建一个 webApicontroller并使用以 http 动词为前缀的方法填充它,则 Api 能够正确地暗示应该在该控制器上使用什么动词。

如果我将 替换为PostUpdate则 Post 方法将继续隐式工作。

是否有方法上可能的前缀列表以及它们映射到的动词?此外,是否可以定义自定义前缀?例如,如果我想总是将一个以“Search”开头的方法映射到 a Post,我可以定义这个吗?

0 投票
3 回答
1471 浏览

ruby-on-rails - 没有模型的资源如何连接到控制器

我正在编写一个抓取数据的基本应用程序。我的routes.rb.

在控制器中,我有类似的东西,尽管我不确定资源是如何连接到控制器的。

另外,我没有Model. 这是否意味着在我的资源:apps中调用 AppsController 中的一个方法apps?如果我希望它不调用应用程序,那怎么可能?

  • rails 中的控制器如何知道它属于哪个路由
  • 我正在尝试添加一个 GET /apps?filter=5,它以 JSON 的形式返回我的抓取数据,并使用过滤器作为参数,这意味着向我返回 5 个 JSON 对象
0 投票
0 回答
46 浏览

c# - PUT API 请求 -(IIS 媒体服务 API)

我正在尝试完成对 IIS 媒体服务 API 的 PUT 请求 - 尝试将发布点设置为“停止”状态。

我已经阅读了以下链接,这对我没有太大帮助! https://msdn.microsoft.com/en-us/library/hh206014%28VS.90%29.aspx

我当前的代码在 httpWebRequest1.GetResponse() 上抛出异常,这表明 Web 服务器正在返回 401 未经授权的错误代码:

我的用户名/密码被注释掉了,但是在浏览器中访问页面并在打开的用户名/密码表单中输入它们时它们可以正常工作。

My Script 本质上“PUT”是一个 XML 文档,它是在浏览器中访问状态页面时返回的 XML 文档的副本。

任何帮助,将不胜感激。

0 投票
1 回答
2958 浏览

c# - 在 OWIN TestServer 上调用 HTTP PUT

我一直在尝试使用 OWIN TestServer 类实现集成测试,除了 PUT 或 DELETE 方法的实现之外,一切正常。POST 方法代码(有效)如下所示:

要执行 PUT 请求,我尝试了以下两种方法:

SendAsync( " PUT")作为不受支持的方法返回。该参数不是可选的。PostAsync方法忽略HTTPMethod.Put仍然尝试 POST 动词。

除了 POST 和 GET 之外,我如何使用这些动词和其他动词?

0 投票
1 回答
971 浏览

ruby-on-rails - 用于发送电子邮件的正确 HTTP 动词

对于一个简单地让服务器发送电子邮件而不改变整个 webapp 状态的请求,正确的 http 动词是什么?

我正在开发一个 Rails 项目,我需要以某种方式定义路线:

0 投票
1 回答
79 浏览

c# - API 中的自定义搜索

我有一个 API 可以自定义搜索超过六个字段,类似于以下内容,但也可能包含敏感数据,因为我在其他地方对相同类型的搜索使用相同的方法

  • 用户名
  • 电子邮件
  • 部门

我通常使用 RESTful 方法,因此对于用户列表或单个用户,检索用户将类似于以下内容

但是,对于搜索,我对如何允许这样做感到有些困惑。我的初衷是在请求正文中使用 JSON,例如

但是,我不能使用看起来合乎逻辑的请求正文(以及用于 POST 等操作),因为据我所知,Chrome 不支持它(或者至少 PostMan 插件不支持,我们用于测试)

因此,执行此搜索的最佳方式是什么?

我看到的选项

使用标题

这似乎是标头的“错误”使用,但也是最接近原始请求正文的

在 URL 中使用参数

例如

但这会使控制器变得混乱(使用 C# Web API),因为我不能将项目留空。所以请求会更像这样,除非我有大量的重写方法来处理不同的排列。这似乎......凌乱

也许更重要的是,它在“肩膀上”留下了太多可见的东西:这是在医疗保健环境中,虽然不可避免地会显示一些东西,但我宁愿将其保持在最低限度(数据本身自然是, SSL 在传输过程中加密)

使用不同的 HTTP 动词

我可以使用 POST 或其他一些动词,它们会起作用,但违反直觉,并且与 RESTful 方法(据我所知)和我自己在项目中的标准背道而驰,因此可能会造成混淆。

有没有其他人遇到过这个?处理它的“官方”或最佳方式是什么?