我试图使用HttpsURLConnection,然后执行PUT请求与网站建立HTTPS连接.当我尝试创建OutputStreamWriterfrom时HttpsURLConnection.getOutputStream(),抛出以下异常:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)
该页面刚刚获得了证书(由StartCom发布) - 我是否需要手动执行某些操作以使Java识别证书现在存在?我可以毫无困难地连接到同一网站的其他页面,但他们有不同的证书.
我在 django Rest 框架中使用以下代码来实现放置和修补功能。PATCH (partial_update) 工作正常,但是,为 PUT 提供较少的字段不会像 PUT 请求那样替换整个资源。例如,如果数据如下所示:
{
"id": 6,
"name": "crticial MVP",
"description": "getting things done",
"end": "2012-02-18"
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用以下数据进行 PUT(在http://localhost:800/api/sprints/6/上):
{
"name": "critical MVP2",
"end": "2012-02-18"
}
Run Code Online (Sandbox Code Playgroud)
此调用应将描述设置为无。但描述保留了它的价值,就好像我正在做一个补丁一样。如何在更新功能中强制执行资源替换?
PS:我在初始化序列化器进行更新时设置了partial=False。
视图.py:
class SprintViewSet(viewsets.ModelViewSet):
queryset = Sprint.objects.order_by('end')
serializer_class = SprintSerializer
def update(self, request, *args, **kwargs):
sprint=self.get_object()
serializer = SprintSerializer(sprint, data=request.data, partial=False,
context={'request': request, 'view':self, 'format':None})
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data)
def partial_update(self, request, *args, **kwargs):
instance = self.get_object()
serializer = SprintSerializer(instance, data=request.data, partial=True,
context={'request': request, 'view':self, …Run Code Online (Sandbox Code Playgroud) django http-put django-serializer django-rest-framework http-patch
我正在构建 HTTP REST API 并为 API 实现 CQRS、DDD、ES 和微服务概念。
例如,我想为订购系统构建 API。订单包含订单状态、客户数据、员工数据、购物车项目、运输数据。订单命令服务和订单查询服务使用不同的代码,不同的数据库。和不同的IP/端口。
客户数据包括客户 ID、名字、姓氏、联系电话等。销售和员工等员工数据包括员工 ID、电子邮件、姓名和角色。送货数据包括送货地址、城市、邮政编码、送货单、送货方式和送货费用。购物车项目包含产品 ID 和数量。客户数据、产品数据、员工数据和运输方式数据来自其他服务。
当我想开发它时,我有两个问题。
我应该怎么做才能以正确的方式开发 HTTP REST API?
谢谢你。
我正在开发一个宁静的 api,我需要更新一个资源(即一个包含 10 个字段的客户详细信息记录)。
在添加请求时,我发送一个带有完整记录的 Post 请求。在更新请求时,我发送一个包含 10 个字段的完整记录的 PUT 请求。在验证请求中,我发送一个只有两个字段的 PUT 请求,即 recordId 和 versionNo。在删除请求时,我在 HttpOptions 中发送一个带有两个字段的 DELETE 请求。
我有几个问题:
虽然,它是一个宁静的 api,但它是一个特定的应用程序,它将被一个有角度的应用程序使用,所以我应该返回数据以响应 POST/PUT 请求。
我应该在验证的情况下使用 PATCH(或任何其他仅将 recordId 和 versionNo 发送到服务器以更改某些字段的操作)还是可以使用 PUT。
为了统一起见,我是否应该在删除请求的正文中发送数据,因为我需要 recordId 和 versionNo 来删除记录。
我试图使用Slim框架从PUT请求中检索参数.从POST主体解析参数时,我可以简单地$request->post('param')用来检索param中的值.但是,当我使用时$request->put('param'),我总是收到null.
我的PUT身体是这样形成的:param=value&otherparam=othervalue&foo=bar......
PS:我已经看过这个问题,但答案没有使用put()-Method.
我想使用适合以下场景的适当方法来设计我的休息端点。
有一个团体。每个小组都有成员。会员必须经过群管理员批准才能成为会员。如果管理员拒绝,用户将无法成为该组的成员。
我有以下端点来解决这种情况。
当用户加入群组时
POST /projects/api/v1/projects/{project id}/members/{member id}
用于
PUT /groups/api/v1/groups/{group id}/members/{member id}/approve批准会员资格
但是,我无法确定拒绝会员资格的正确端点。我应该使用
PUT /projects/api/v1/projects/{project id}/members/{member id}/reject
Run Code Online (Sandbox Code Playgroud)
或者
DELETE /projects/api/v1/projects/{project id}/members/{member id}
Run Code Online (Sandbox Code Playgroud) 我正在使用HttpPut与Android中的服务器通信,我得到的响应代码是500.在与服务器人交谈后,他说准备下面的字符串并发送.
{ "键": "值", "关键": "值"}
现在我完全感到困惑,我应该在我的请求中添加此字符串.
请帮帮我.
我有管理资源的 REST 服务EASYPAY..此时此服务公开了 3 种不同的方法:
GET);POST);PUT)。当我插入或更新请求时,我还必须trace在数据库的表中插入一行。
现在我必须删除一个 Easypay 请求,我还必须在跟踪表上添加一行。我想使用DELETEHTTP 动词,但我看到使用 delete 我不能传递复杂的对象,而只能传递要删除的请求的 ID。我不能使用PUTHTTP 动词,因为我已经使用过它,无论如何它在概念上都不正确......我不想做更多的从客户端到服务器的调用(一个用于删除请求,另一个用于删除请求)在跟踪表中添加一行)..所以我不知道如何解决问题。
编辑
我试着解释得更好......我有一个部署在两个不同服务器上的网站。一种用于前端,一种用于后端。后端只为前端公开一些 REST 服务,它无法访问互联网(只能访问内部网)。访问该网站的客户可以通过名为 XPAY 的系统进行付款,它的工作方式与 paypal 非常相似(XPAY 只是另一个虚拟 POS)。因此,当客户尝试付款时,我会在数据库中保存一些信息 + 跟踪付款尝试,然后将他重定向到 XPAY。在那里,他可以付款。最后,XPAY 返回网站(前端)向我们传达付款结果。结果在支付的 URL 中,所以我必须把 URL 中的所有信息都发送到后端。根据结果,
你有什么建议?
谢谢
我使用来自使用XMLHttpRequest发送POST数据的示例来创建此JavaScript代码:
function PostXML(webURL, post_data) {
var objHTTP = new ActiveXObject("MSXML2.XMLHTTP");
objHTTP.open("POST", webURL, false);
objHTTP.setRequestHeader("Content-Type", "application/xml; charset=utf-8");
objHTTP.setRequestHeader("Accept", "application/xml; charset=utf-8");
objHTTP.setRequestHeader("Content-Length", post_data.length);
objHTTP.send(post_data);
while((objHTTP.readyState != 4) && (objHTTP.readyState != 'complete')) {
Delay(100);
}
if(200 != objHTTP.Status) {
Log.Message("Returned Status Code of: " + objHTTP.Status);
Log.Message("Status Text: " + objHTTP.StatusText);
}
else {
Log.Message("Returned Status Code of: " + objHTTP.Status);
}
return objHTTP.responseText;
}
Run Code Online (Sandbox Code Playgroud)
我也需要PUT和DELETE东西.如何传输此代码才能使用PUT,以及如何传输此代码以便能够执行此操作DELETE?
任何其他同样有效的例子也很好.
http-put ×9
http-delete ×4
rest ×4
http ×2
http-method ×2
android ×1
complextype ×1
cqrs ×1
django ×1
http-patch ×1
http-post ×1
httprequest ×1
https ×1
java ×1
javascript ×1
slim ×1
xml ×1