假设我有一个/api/shipments/100
支持HTTP DELETE方法的资源(例如:).正如您可以从URI本身理解的那样,如果针对此URI发出DELETE请求,则将删除此资源.
在我当前的场景中,只有满足某个条件,才能成功执行DELETE请求,如下所示:
如果存在针对该URI的DELETE请求并且不满足上述条件,那么在这种情况下哪个HTTP状态代码更适合返回?我已经考虑过以下的但是无法确定哪一个更具语义:
我在向其他域上的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添加代码时,我只得到第一个错误.
有人可以帮我这个吗?
我在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)
如果有人可以调查并帮助我,我将不胜感激
我正在开发一个RESTful Web服务项目,我正在使用Apache Tomcat和JAX-RS.
我想接受来自客户端的DELETE请求,但每当我从Advanced REST客户端Chrome插件发送DELETE请求时,它都会给出响应代码403 Forbidden.
那么我怎样才能让Apche Tomcat接受DELETE请求呢?
我正在尝试创建一个异步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
我一直在搜索如何执行此操作 - 我在尝试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) 我正在使用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?
有人可以给我一个成功的删除示例吗?我在网上搜索但找不到足够的信息.非常感谢.
我正在构建一个RESTful API命令来停用用户记录.是否使用DELETE来执行此操作或是否应该是PUT,因为记录正在更新为"已停用"状态?或者只是品味问题?
我试图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
我试图向DELETE
IIS7.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)
最可怕的是:
web.config
为什么IIS不起作用?
使用通用处理程序创建一个Web站点:
Foo.ashx
<%@ …
Run Code Online (Sandbox Code Playgroud)