是否有关于浏览器如何实际支持其余http动词(尤其是PUT,DELETE)的数据.这个问题主要是由于许多来源(例如这个stackoverflow答案)告知大多数浏览器不支持PUT和DELETE但不说哪个.
Rails使用客户端上的补丁解决了这个问题,并在服务器上反转补丁,但我想知道,例如,哪些浏览器不需要这样的黑客攻击.
Spring 3 MVC支持所有4种RESTful方法:GET,POST,PUT和DELETE.但它的视图技术是否在表格上支持它们?如果没有,标签中method属性的真正用途是form:form什么?
我尝试在表单上使用PUT方法:
<form:form action="/myaction" method="PUT">
...
</form:form>
Run Code Online (Sandbox Code Playgroud)
生成的HTML是:
<form id="command" action="/myaction" method="post">
<input type="hidden" name="_method" value="PUT"/>
...
</form>
Run Code Online (Sandbox Code Playgroud)
很明显,因为除了GET和POST之外,大多数浏览器都不支持其他方法.但Spring可以通过附加input名称_method和值来处理它METHOD_NAME.可以?
当我将指定的表单发送到带注释的控制器方法时
@RequestMapping(method=RequestMethod.PUT)
Run Code Online (Sandbox Code Playgroud)
它声称,POST不支持该请求方法.但为什么POST不PUT呢?在引擎盖下实际发生了什么?
动词对于CRUD动作非常简单.
什么是正确的HTTP动词只执行一个动作,像upvote?
也许这说明数据建模更多?是upvote资源还是仅属性?我对此不确定.假设它通过调用#upvote模型直接修改资源.
例如,如果我在SO上提出一个问题,那么该动作应该理想地使用什么动词?我正在以部分方式修改资源(PATCH?),但同时,我不想指定新值,因为我可能会遇到并发问题,因此最好由数据库管理.换句话说,我们要求服务器对资源执行增量操作.那是否涵盖PATCH?
我在那里看到过类似的问题,但他们的案例指出通过将作业请求视为要创建的对象来创建新资源.我们在这里是一样的吗?
如果PATCH方法真的合适,它会包含什么?
我试图Delete在Web API控制器上实现一个方法.但是,我总是得到一个404 - Not Found.在这一点上,我有GET,POST和PUT方法正常工作.我一直在阅读关于同一问题的其他一些SO帖子 - 他们都没有工作.
public virtual HttpResponseMessage Delete(string customerId)
{
adapter.RemoveCustomer(customerId);
return Request.CreateResponse(HttpStatusCode.OK, "The customer was deleted.");
}
Run Code Online (Sandbox Code Playgroud)
function remove(customer, success, error) {
var url = '/api/Customer';
var data = JSON.stringify({ 'customerId': customer.CustomerId });
$.ajax({
url: url,
type: 'DELETE',
data: data,
contentType: 'application/json'
})
.done(function (data, textStatus, handler) {
success(data);
})
.fail(function (handler, textStatus, errorThrown) {
error(errorThrown);
});
};
Run Code Online (Sandbox Code Playgroud)
这是我的web.config档案.除了模块部分,一切都与我创建项目时相同:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<!--<modules runAllManagedModulesForAllRequests="true"></modules>--> …Run Code Online (Sandbox Code Playgroud) http-method http-status-code-404 http-delete asp.net-web-api
我正在阅读关于CORS请求的规范,我发现了有关预检请求的内容:
这些是对具有除GET之外的HTTP请求方法的非同一原始URL的请求,首先需要使用预检结果缓存条目或预检请求进行授权.
我曾经认为预检请求的目的是在创建请求之前检查是否允许请求,以防它(非法)更改服务器状态.
但是HEAD和OPTIONS不会修改服务器状态.我必须误解预检检查的原因.
为HEAD和OPTIONS进行预检检查但不是GET的目的(也就是原因,动机或理由)是什么?GET有什么特别之处?
在AWS Lambda代码中,如何获取来自AWS Gateway API的HTTP请求的HTTP方法(例如GET,POST ...)?
我从文档中了解到context.httpMethod是解决方案.
但是,我无法让它发挥作用.
例如,当我尝试添加以下3行时:
if (context.httpMethod) {
console.log('HTTP method:', context.httpMethod)
}
Run Code Online (Sandbox Code Playgroud)
进入"microservice-http-endpoint"蓝图的AWS示例代码如下:
exports.handler = function(event, context) {
if (context.httpMethod) {
console.log('HTTP method:', context.httpMethod)
}
console.log('Received event:', JSON.stringify(event, null, 2));
// For clarity, I have removed the remaining part of the sample
// provided by AWS, which works well, for instance when triggered
// with Postman through the API Gateway as an intermediary.
};
Run Code Online (Sandbox Code Playgroud)
我从来没有在日志中有任何东西因为httpMethod总是空的.
我已经看到很多东西,通常说"不是所有的浏览器都支持所有的HTTP方法"等,但有没有一个很好的表格,具体显示哪些HTTP方法是由浏览器分解的支持?
我在SO上看到了这个问题,但这不是我正在寻找的答案: Fine Grained rest HTTP动词浏览器支持
我想尽可能使用适当的HTTP方法.在这种情况下,当单击按钮删除某些内容时,我想使用该属性触发控制器操作[HttpDelete].但是,我似乎无法使用此方法创建表单 - 使用Razor语法.该FormMethod枚举没有一个选项Delete并执行以下操作不会覆盖它:
@using (Html.BeginForm("Order", "Users", FormMethod.Post, new { method = "DELETE" }))
Run Code Online (Sandbox Code Playgroud)
搜索解决方案没有产生,没有人这样做吗?我知道我可以使用POST,但这不是HTTP删除方法的重点吗?
我知道HTTP方法是如何工作的以及它们的设计方式,但我很想知道在使用数据时,某些方法是否比其他方法更快.
在我正在研究的团队中,我注意到很多JQuery ajax请求,如下所示:
$.ajax({url: "../dir/someFile.json", method: 'post', dataType: 'json',
error: function(...){ ... },
success: function(...){ ... }
});
Run Code Online (Sandbox Code Playgroud)
我显然使用'get'方法,因为没有数据发送到此请求.这可能发生在队友复制和粘贴代码时.这也很好,似乎没有充分的理由将其改为'get'.
我认为在这种情况下使用'get'方法会更快,但我没有找到任何肯定的来源.
问一个与HTTP 标头是否区分大小写相关的问题?,如果 HTTP 方法区分大小写,大多数服务器如何处理“get”或“post”与“GET”或“POST”?
例如,看起来 Apache httpd 返回“501 Method Not Implemented”以响应小写方法,这正是我所期望的。
http-method ×10
http ×4
http-delete ×2
rest ×2
ajax ×1
aws-lambda ×1
cors ×1
cross-domain ×1
forms ×1
jquery ×1
preflight ×1
razor ×1
spring ×1
spring-mvc ×1