我正在使用ASP.NET MVC实现RESTful API的原型,除了奇怪的bug之外,我已经实现了我在开始时设置的所有要求,除了调用者能够使用X-HTTP-Method-Override自定义标头覆盖HTTP方法.
我想要的是以下要求......
GET /someresource/123 HTTP/1.1
X-HTTP-Method-Override: DELETE
Run Code Online (Sandbox Code Playgroud)
...将被调度到我的控制器方法,该方法实现DELETE功能而不是该GET操作的功能(假设有多个方法实现该操作,并且它们标记有不同的[AcceptVerbs]属性).因此,鉴于以下两种方法,我希望将上述请求分发给第二个:
[ActionName("someresource")]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetSomeResource(int id) { /* ... */ }
[ActionName("someresource")]
[AcceptVerbs(HttpVerbs.Delete)]
public ActionResult DeleteSomeResource(int id) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
有人知道这是否可行?这样做会有多少工作......?
我遇到了捕获发送到服务器的PUT请求的问题.
这些是我的方法:
@RequestMapping(method= RequestMethod.GET)
public String getCity(@PathVariable(value="cid") String cid, @RequestParam(value="State") Integer state, Model model) {
System.out.println("get request");
return "index";
}
@RequestMapping(method= RequestMethod.PUT)
public String putCity(@PathVariable(value="cid") String cid, @RequestParam(value="State") Integer state, Model model) {
System.out.println("put request");
return "index";
}
Run Code Online (Sandbox Code Playgroud)
当我跟踪调用时,我的PUT请求是由GET方法处理的,而不是我班级中的PUT方法..在屏幕上,它总是读作"获取请求".我已经检查了浏览器日志并确认他们发送了正确的PUT请求,所以我想我在这里错过了一些Spring配置,但我不知道它是什么..
有人可以帮忙吗?
谢谢.
编辑:附加代码与类:
@Controller
@RequestMapping(value="/retail/{cid}/master/city")
public class City {
@RequestMapping(value="/foo1", method= RequestMethod.GET)
public String getCity(@PathVariable(value="cid") String cid, @RequestParam(value="State") Integer state, Model model) {
System.out.println("get request");
return "index";
}
@RequestMapping(value="/foo2", method= RequestMethod.PUT)
public String putCity(@PathVariable(value="cid") String cid, @RequestParam(value="State") Integer state, Model model) …Run Code Online (Sandbox Code Playgroud) 我正在尝试满足以下要求(在Apache HTTPD 2.2中):
这是我尝试过的很多事情之一,但我尝试的所有事情都没有达到所有这三个要求:
<Directory /path/to/wwwroot>
Options FollowSymLinks
AllowOverride FileInfo
# Basic Authentication
AuthType Basic
AuthName "Enter your site username and password."
AuthUserFile /path/to/stage.passwords
AuthGroupFile /path/to/stage.groups
Require group stageusers
# there's more logic for this variable in the real virtual_host.
# for this simplified example, manually set (using the following)
# or unset (using !internal_user).
SetEnv internal_user
Order deny,allow
Deny from all
Allow from env=internal_user
<LimitExcept HEAD POST GET>
Deny from all
</LimitExcept>
Satisfy all
</Directory>
Run Code Online (Sandbox Code Playgroud)
我已阅读有关满足,限制,限制,订单和基本身份验证的文档,但我无法将各个部分放在一起. …
我有一个代表标签集合的资源:
/users/{username}/tags
Run Code Online (Sandbox Code Playgroud)
API客户端应该能够在单个HTTP请求中向此集合添加一组标记.我想过如何做到这一点,并首先考虑使用PUT或POST方法.但是我认为这意味着客户端正在"设置"或"替换"该集合中的标签.将"多个"标签"添加"到该集合中最合适的HTTP方法(或者可能是不同的机制)是什么?
{HTTP METHOD} /users/{username}/tags
Run Code Online (Sandbox Code Playgroud)
请求机构:
["short", "crazy", "funny"]
Run Code Online (Sandbox Code Playgroud) 我正在使用PhoneGap构建一个移动应用程序,我需要它来适应我的服务RESTful api.
基本上如果我想检索/删除/更新/检查/(非幂等操作)资源,通过jQuery的ajax方法向http://example.com/resource/:id发出GET/DELETE/PUT/HEAD/POST请求是支持的.这是我遇到问题的地方.
由于PhoneGap保存文件并在本地提供文件(例如:file://file.html),因此我将遇到ajax调用的跨域问题.另外,我知道JSONP基本上是在文档中插入脚本,因此是一种请求方法的解决方案
以下是一些想法:
什么是这个问题最优雅的解决方案?插件是受欢迎的.
TL; DR:如何针对不同的HTTP方法为$ .ajax请求添加跨域支持?
在我的网站中,用户可以下载他们的文件 但是文件是使用PHP生成的.那么我应该使用什么HTTP方法来发送作为文件附件的下载请求?GET还是POST?
我正在编写一个基于HTTP的API,并且遇到一种情况,即用户指定资源,如果该资源尚不存在,则服务器会创建该资源。它基本上是建立在Django get_or_create方法之上的。
在这种情况下,最惯用/正确的HTTP方法是什么?
我怀疑那POST是正确的。但是,我不确定。虽然看来这GET是不正确的,因为它不应该有任何副作用。
我正在实施一些休息服务。根据 SDK,我必须调用的第一个服务是用于登录的 http POST 请求。输入是我的用户的凭据,输出是我的会话 ID。
要注销,我还必须发出 http POST 请求,但请求正文中没有任何数据/有效负载。相反,必须在包含会话 ID 的请求中添加标头字段。
我有点困惑,这是 loggoff 请求的正确设计吗,还是应该使用 GET 方法?更一般地说,没有输入(查询参数和请求标头除外)且没有输出的请求应该是 GET、POST 还是其他内容?为什么这样或为什么不呢?
正如标题所说,我想知道如何使用 Java 中的 OPTIONS 方法使用 HTTPClient 发送 HTTP 请求。我查看了可以使用的 HTTP 方法(GET、POST、PUT 和 DELETE),但我还没有看到这个选项。使用 HTTPClient 的 GET/POST 请求示例如下:
String uri = "https://www.stackoverflow.com/"
HttpRequest.Builder preRequest=null;
// EXAMPLE OF GET REQUEST
preRequest = HttpRequest.newBuilder()
.uri(URI.create( uri ))
.GET();
// EXAMPLE OF POST REQUEST
preRequest = HttpRequest.newBuilder()
.uri(URI.create( uri ))
.POST(BodyPublishers.ofString(req.getBody())); // "req" is an object of a class made by me, it does not matter in this context
Run Code Online (Sandbox Code Playgroud)
如果它不能使用(这对我来说似乎非常罕见),我可以使用什么替代方法?
非常感谢您提前!
在 Azure Functions 中构建应用程序时,您可以指定 function.json 中接受的 HTTP 方法
给定一个可以执行多种功能(GET、PUT POST 等)的 API,创建该功能的最佳方法是什么。
需要提供可用的共享逻辑和库,因此我正在寻找一种可以在单个类中启用所有方法的模式,但不确定如何在 function.json 中定义它,以便每个 HTTP 方法可以有自己的入口点。
另一种选择是创建一个函数,该函数基本上选择该函数的方法和类,但这似乎是一些中间件开销,我确信可以以更好的方式处理。
即我认为我不应该为每个为其创建函数的对象执行此操作,并且必须有更好的模式。
async HandleRequest(){
return validateJwt(function(context,req){
if(req.method === 'GET'){
}
else if(req.method === 'POST'){
}
else if(req.method === 'DELETE'){
}
else if(req.method === 'PUT'){
}
else if(req.method === 'PATCH'){
}
});
}
Run Code Online (Sandbox Code Playgroud) http-method ×10
http ×5
rest ×4
api ×2
java ×2
apache ×1
asp.net-mvc ×1
attachment ×1
cordova ×1
cors ×1
cross-domain ×1
download ×1
http-headers ×1
jquery ×1
node.js ×1
options ×1
php ×1
spring ×1
spring-mvc ×1
virtualhost ×1