标签: http-method

是否可以在ASP.NET MVC中实现X-HTTP-Method-Override?

我正在使用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)

有人知道这是否可行?这样做会有多少工作......?

rest asp.net-mvc http-method http-headers

5
推荐指数
1
解决办法
6859
查看次数

Spring Framework,启用PUT方法

我遇到了捕获发送到服务器的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)

java rest spring spring-mvc http-method

5
推荐指数
1
解决办法
2万
查看次数

在Apache 2.2虚拟主机中组合基本身份验证和LimitExcept

我正在尝试满足以下要求(在Apache HTTPD 2.2中):

  • 如果HTTP方法不是HEAD,POST或GET,则不允许访问,无论以下是什么.
  • 如果用户是内部用户,则允许访问而不进行基本身份验证质询.
  • 如果用户是外部用户,请使用基本身份验证进行质询,并在他们拥有良好凭据时允许.

这是我尝试过的很多事情之一,但我尝试的所有事情都没有达到所有这三个要求:

<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)

我已阅读有关满足,限制,限制,订单和基本身份验证的文档,但我无法将各个部分放在一起. …

apache virtualhost basic-authentication http-method

5
推荐指数
1
解决办法
579
查看次数

用于在RESTful API中添加到集合的HTTP方法

我有一个代表标签集合的资源:

/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)

api rest http-method

4
推荐指数
2
解决办法
4790
查看次数

PhoneGap和RESTful API的不同HTTP方法请求

我正在使用PhoneGap构建一个移动应用程序,我需要它来适应我的服务RESTful api.

基本上如果我想检索/删除/更新/检查/(非幂等操作)资源,通过jQuery的ajax方法向http://example.com/resource/:id发出GET/DELETE/PUT/HEAD/POST请求是支持的.这是我遇到问题的地方.

由于PhoneGap保存文件并在本地提供文件(例如:file://file.html),因此我将遇到ajax调用的跨域问题.另外,我知道JSONP基本上是在文档中插入脚本,因此是一种请求方法的解决方案

以下是一些想法:

  1. 请求HTML工作,而不是请求数据类型的JSON或JSONP,然后将文档响应解析为JSON对象?
  2. 对于每个请求,创建和删除页面中的iFrame,如此海报使用PUT/POST/DELETE与JSONP和jQuery(感觉脏和不优雅)
  3. 某种形式的服务器端CORS与用户名/密码或令牌一起发送请求允许这个(我先在iOS上推出)
  4. 我无法创造性地指出的其他一些策略.

什么是这个问题最优雅的解决方案?插件是受欢迎的.

TL; DR:如何针对不同的HTTP方法为$ .ajax请求添加跨域支持?

jquery cross-domain http-method cors cordova

4
推荐指数
1
解决办法
3611
查看次数

哪种HTTP方法用于文件下载?

在我的网站中,用户可以下载他们的文件 但是文件是使用PHP生成的.那么我应该使用什么HTTP方法来发送作为文件附件的下载请求?GET还是POST?

php http attachment download http-method

4
推荐指数
2
解决办法
8864
查看次数

获取或创建的最佳HTTP方法

我正在编写一个基于HTTP的API,并且遇到一种情况,即用户指定资源,如果该资源尚不存在,则服务器会创建该资源。它基本上是建立在Django get_or_create方法之上的。

在这种情况下,最惯用/正确的HTTP方法是什么?

我怀疑那POST是正确的。但是,我不确定。虽然看来这GET是不正确的,因为它不应该有任何副作用。

api rest http http-method

4
推荐指数
2
解决办法
635
查看次数

注销请求应该设计为 GET 还是 POST?

我正在实施一些休息服务。根据 SDK,我必须调用的第一个服务是用于登录的 http POST 请求。输入是我的用户的凭据,输出是我的会话 ID。

要注销,我还必须发出 http POST 请求,但请求正文中没有任何数据/有效负载。相反,必须在包含会话 ID 的请求中添加标头字段。

我有点困惑,这是 loggoff 请求的正确设计吗,还是应该使用 GET 方法?更一般地说,没有输入(查询参数和请求标头除外)且没有输出的请求应该是 GET、POST 还是其他内容?为什么这样或为什么不呢?

http http-method

4
推荐指数
1
解决办法
2664
查看次数

如何使用 HTTP 选项方法和 HTTPClient (Java 11) 发送请求?

正如标题所说,我想知道如何使用 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)

如果它不能使用(这对我来说似乎非常罕见),我可以使用什么替代方法?

非常感谢您提前!

java http options http-method java-http-client

4
推荐指数
1
解决办法
849
查看次数

在 Azure Functions (NodeJS) 中处理多个 HTTP 方法的正确方法是什么

在 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 http-method node.js azure-functions

4
推荐指数
1
解决办法
6746
查看次数