相关疑难解决方法(0)

如何使用 HTTP DELETE 通过 JerseyClientBuilder 传递表单数据

我目前正在针对基于 DropWizard 的 REST API 应用程序编写单元测试。我正在测试的端点有两种添加和删除对象属性的方法。POST 调用创建属性,DELETE 调用可以删除它。我可以提交带有标识该属性的表单数据的 POST 请求。我在提交包含标识该属性的表单数据的 DELETE 请求时遇到问题。要提交 POST,我使用:

Client client = new JerseyClientBuilder(RULE.getEnvironment())
                                        .build(String.format("test client %d", _id));
_id++;

return client.target("http://localhost:5000/Object/12345/Property")
                     .request(MediaType.APPLICATION_JSON_TYPE)
                     .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE), Response.class);
Run Code Online (Sandbox Code Playgroud)

这按预期工作。但是,JerseyInitation.Builder 对象的 DELETE 相关方法似乎缺少传递定义表单参数的实体对象的方法。如果我尝试使用较低级别的 .method() 函数:

Client client = new JerseyClientBuilder(RULE.getEnvironment()).build(String.format("test client %d", _id));
_id++;

return client.target("http://localhost:5000/Object/12345/Property")
                     .request(MediaType.APPLICATION_JSON_TYPE)
                     .method("DELETE", 
                             Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE), 
                             Response.class);
Run Code Online (Sandbox Code Playgroud)

我收到这个完全无益的异常:

java.lang.IllegalStateException: Entity must be null for http method DELETE.
Run Code Online (Sandbox Code Playgroud)

我对 HTTP 规范的理解(以及 stackoverflow 的共识:是否允许 HTTP DELETE 请求使用实体主体?)表明带有 DELETE 的消息主体完全符合标准,尽管某些实现任意决定阻止这一点。泽西岛似乎是这些有限的实现之一。解决这个问题的理想的最小努力的解决方法是什么?(假设 DropWizard 应用程序是不可变的,“只需重写 REST API 以不使用 DELETE 或使用不同的 REST URI …

java rest jersey

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

如何在 $http.delete 中发送和排列

我想删除使用 http post 创建的标签。这是我尝试过的代码。

$http({
    method: 'DELETE',
    url: '/api/tags',
    data: [vm.tags.name]
}).success(function(data) {
    console.log('Gets DELETED');
    vm.tags.name = data;
}).error(function(data) {
    console.log('Does not get DELETED');
});
Run Code Online (Sandbox Code Playgroud)

但是这不起作用,它只发送一个带有 [null] 的数组。那么这里有什么我没有看到或理解的东西。我的意思是,如果 POST 有效,它应该与 DELETE 以相同的方式工作,对吗?顺便说一下,它显示了日志“Gets DELETED”,但没有这样做。

http angularjs meanjs

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

带有Request Body的Java HTTP DELETE

我有一个外部API,它使用DELETE与body(JSON).我使用Postman REST Client并使用请求体完成删除,它工作正常.我正在尝试使用方法自动执行此功能.

我尝试了类似的GET,POST和PUT的HttpURLConnection.但我不知道如何将DELETE与请求体一起使用.

我已经检查了StackOverflow,看到这是无法完成的,但它们是非常古老的答案.

有人可以帮忙吗?我正在使用spring框架.

java http

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

REST API,何时使用@PathParam,@ QueryParam,@ RequestBody和/或@RequestHeader

如果在何时/何时不使用上述将信息传递给REST调用的方法,我一直试图找到答案.

我一直在寻找各地,但每个帖子只讨论两种列出的方法之间的差异,或3,而不是所有4.

java rest spring restful-architecture spring-boot

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