标签: http-delete

出于特殊原因不允许执行DELETE操作时要返回的HTTP状态代码

假设我有一个/api/shipments/100支持HTTP DELETE方法的资源(例如:).正如您可以从URI本身理解的那样,如果针对此URI发出DELETE请求,则将删除此资源.

在我当前的场景中,只有满足某个条件,才能成功执行DELETE请求,如下所示:

  • 如果装运状态未设置为InTransit或已交付.

如果存在针对该URI的DELETE请求并且不满足上述条件,那么在这种情况下哪个HTTP状态代码更适合返回?我已经考虑过以下的但是无法确定哪一个更具语义:

  • 405方法不允许
  • 403禁止
  • 409冲突

http http-status-codes http-delete asp.net-web-api

16
推荐指数
1
解决办法
4588
查看次数

.NET Web API CORS PreFlight请求

我在向其他域上的Web API发出PUT和DELETE CORS请求时遇到一些麻烦.

我已经通过http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#create-webapi-project教程对API进行了编码.

GET和POST请求工作正常,但DELETE和PUT没有.我收到这条消息:

Failed to load resource: the server responded with a status of 405 (Method Not Allowed)
Failed to load resource: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)

当我在使用ASP.NET Web API的CORS支持PUT和DELETE时向WebConfig添加代码时,我只得到第一个错误.

有人可以帮我这个吗?

.net cors http-delete preflight

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

Spring - 405此URL不支持Http方法DELETE

我在Spring中执行"DELETE"HTTP请求时遇到了一个奇怪的问题.

我有一个控制器方法,我已将DELETE请求映射到:

    @RequestMapping(value = "/{authorizationUrl}",method=DELETE)
    public void deleteAuthorizationServer(
            @RequestHeader(value="Authorization") String authorization,
            @PathVariable("authorizationUrl") String authorizationUrl)
            throws  IOException {

        System.out.println("TEST");

    }
Run Code Online (Sandbox Code Playgroud)

控制器使用@RequestMapping("/authorization_servers"); 当我通过我的DEV Http客户端发送请求时映射,我收到响应:405 Http method DELETE is not supported by this URL.

请求如下所示:

 DELETE    localhost:8080/authorization_servers/asxas

  Headers:
  Authorization: "test:<stuff>"
Run Code Online (Sandbox Code Playgroud)

如果有人可以调查并帮助我,我将不胜感激

java spring spring-mvc http-status-code-405 http-delete

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

如何使Apache Tomcat接受DELETE方法

我正在开发一个RESTful Web服务项目,我正在使用Apache Tomcat和JAX-RS.

我想接受来自客户端的DELETE请求,但每当我从Advanced REST客户端Chrome插件发送DELETE请求时,它都会给出响应代码403 Forbidden.

那么我怎样才能让Apche Tomcat接受DELETE请求呢?

java jax-rs http-status-code-403 tomcat7 http-delete

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

为异步FormUrlEncoded DELETE调用改进抛出IllegalArgumentException异常

我正在尝试创建一个异步POST和DELETE,这是使用Android 4.4中的Retrofit编码的url形式

这是我的客户 -

@FormUrlEncoded
@POST(INetwork.API_BASE_PREFIX + "/memberships.json")
void join(@Field("id") String id, Callback<?> cb);

@FormUrlEncoded
@DELETE(INetwork.API_BASE_PREFIX + "/memberships.json")
void leave(@Field("id") String id, Callback<?> cb);
Run Code Online (Sandbox Code Playgroud)

这是例外 -

java.lang.IllegalArgumentException: IRepositoryClient.leave: FormUrlEncoded can only be specified on HTTP methods with request body (e.g., @POST).
        at retrofit.RestMethodInfo.methodError(RestMethodInfo.java:118)
        at retrofit.RestMethodInfo.parseMethodAnnotations(RestMethodInfo.java:191)
        at retrofit.RestMethodInfo.init(RestMethodInfo.java:128)
        at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:329)
        at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:264)
        at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:315)
        at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
        at retrofit.Platform$Android$2$1.run(Platform.java:142)
        at java.lang.Thread.run(Thread.java:841)
Run Code Online (Sandbox Code Playgroud)

我查看了源代码,基本上如果方法没有正文并且请求是formurlencoded,则抛出此异常.另外我注意到FormUrlEncoded的所有例子都工作正常,因为它不是异步的,即我有某种类型的返回类型而且没有回调 - 抱歉我有点丢失

我应该送一个空身吗?我需要发送一个,而且@Field参数不够吗?

使用Retrofit 1.5.0

post android http-post http-delete retrofit

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

ExpressJS - DELETE请求后的res.redirect

我一直在搜索如何执行此操作 - 我在尝试DELETE请求后重定向 - 这是我正在使用的代码没有重定向:

exports.remove = function(req, res) {
  var postId = req.params.id;
  Post.remove({ _id: postId }, function(err) {
    if (!err) {
            console.log('notification!');
            res.send(200);
    }
    else {
            console.log('error in the remove function');
            res.send(400);
    }
  });
};
Run Code Online (Sandbox Code Playgroud)

remove在删除项目(帖子)时调用.一切正常(我不得不使用res.send(200)它来挂起删除请求) - 但现在我无法重定向.如果我res.redirect('/forum')remove函数内部使用,像这样:

exports.remove = function(req, res) {
  var postId = req.params.id;
  Post.remove({ _id: postId }, function(err) {
    if (!err) {
            console.log('notification!');
            res.send(200);
    }
    else {
            console.log('error in the remove function');
            res.send(400);
    }
    res.redirect('/forum'); …
Run Code Online (Sandbox Code Playgroud)

javascript redirect request express http-delete

12
推荐指数
3
解决办法
4231
查看次数

Retrofit 2.0如何删除?

我正在使用retrofit 2.0,我正在我的Android应用程序中实现删除功能,但是,我无法成功,有人可以给我一个建议吗?

我试过两个:

@DELETE("books/{id}") void deleteBook(@Path("id") int itemId);

@DELETE("books/{id}") void deleteBook(@Path("id") int bookId, Callback<Response> callback);
Run Code Online (Sandbox Code Playgroud)

我得到错误java.lang.IllegalArgumentException:服务方法不能返回void.方法LibraryService.deleteBook.

我也尝试过这个:

Response deleteBook(@Path("id") int bookId);
Run Code Online (Sandbox Code Playgroud)

Call<Response> deleteBook(@Path("id") int bookId);

无论我使用okhttp3.Response还是retrofit2.Response,我都会收到错误:'*.Response'不是有效的响应体类型.你的意思是ResponseBody?

有人可以给我一个成功的删除示例吗?我在网上搜索但找不到足够的信息.非常感谢.

java android http-delete retrofit retrofit2

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

是否可以使用HTTP DELETE来取消激活记录?

我正在构建一个RESTful API命令来停用用户记录.是否使用DELETE来执行此操作或是否应该是PUT,因为记录正在更新为"已停用"状态?或者只是品味问题?

api rest put http-delete

10
推荐指数
3
解决办法
2560
查看次数

ASP.NET Web API - 404删除

我试图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)

AJAX请求

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

这是我的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

10
推荐指数
1
解决办法
8551
查看次数

尝试使用DELETE谓词时IIS7.5给出500内部服务器错误

我试图向DELETEIIS7.5资源发出一个:

DELETE http://198.252.206.16:48251/Test/foo.ashx HTTP/1.1
Accept: */*
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Host: 198.252.206.16:48251
Content-Length: 0
Connection: Keep-Alive
Pragma: no-cache
Run Code Online (Sandbox Code Playgroud)

服务器响应:

HTTP/1.1 500 Internal Server Error
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Wed, 12 Feb 2014 01:01:30 GMT
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)

最可怕的是:

  • 它在Cassini(Visual Studio使用的基于.NET的Web服务器)中运行良好
  • Windows事件日志中没有记录任何内容
  • 网站中的自定义错误已关闭 web.config
  • 没有动词被过滤(或者包含所有动词)
  • WebDAV模块已禁用
  • 未安装LiveStreamingHandler模​​块

为什么IIS不起作用?

重现步骤

使用通用处理程序创建一个Web站点:

Foo.ashx

<%@ …
Run Code Online (Sandbox Code Playgroud)

iis rest iis-7.5 http-delete

10
推荐指数
1
解决办法
8533
查看次数