标签: http-patch

如何在Delphi中发出HTTP Patch请求

这个问题是关于在Delphi XE5中构建的应用程序.

我正在与第三方合作提供一个应用程序,允许用户通过HTTP帖子将信息(JSON格式)更新到第三方的API.如果我将用户信息分成单个对象,我可以使用POST方法,但由于单个事件的数量过程很慢.如果我执行包含多个对象的文件的批量发布,但是api要求我在上传文件与单个对象时使用PATCH谓词要快得多.我可以使用curl这样做,但我想避免必须在每个用户系统上安装curl来执行此操作.

有没有办法在Delphi中使用PATCH动词?Indy似乎没有支持PATCH.

http-patch delphi-xe5

3
推荐指数
1
解决办法
1201
查看次数

202接受对http补丁的可接受响应吗?

我需要对资源进行异步更新.关于202 Accepted是否是对PATCH的适当回应,是否有明确的陈述?

这里的官方文档,从未提到202,并且似乎假设由于PATCH导致的资源更改是同步进行的,但它从未做出明确的声明.

PATCH操作的适当原理图是什么?

rest http http-patch

3
推荐指数
1
解决办法
1174
查看次数

HTTP PUT 在 django Rest 框架中无法正常工作

我在 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

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

在RESTful API中更改密码(PATCH上的服务器验证)

在RESTful API中,我拥有用户资源/users,/users/:id包括用户名,电子邮件地址和密码.

当我想更新用户信息时,我可以轻松地PATCH:/users/:id使用一些JSONPatch数据.

现在的问题是,我无法弄清楚如何处理更改密码的情况有currentPassword,newPasswordnewPasswordConfirm形成.

应该使用什么方法(PATCH似乎合适但有问题)以及数据应以何种方式传输(正文/标题/ ......).

在更广泛的范围内 - 如何处理具有更多验证字段的补丁.

这篇文章似乎有关,但没有涵盖这个确切的主题.

authentication rest http web http-patch

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

如何实现通过 RestTemplate 执行的 PATCH?

我正在编写 JUnit 测试,通过 RestTemplate 调用我的应用程序。我已经成功地实现了 GET、POST 和 PUT,但无法运行 PATCH(尽管它在客户端发送 URL 时工作)。例如,使用以下代码运行 POST:

    RestTemplate restTemplate = new RestTemplate(); 
    ProductModel postModel = restTemplate.postForObject(TestBase.URL + URL, pModel, ProductModel.class);            
Run Code Online (Sandbox Code Playgroud)

但是当我尝试调用 restTemplate.patchForObject() - 我在网上找到的 - STS 返回一个错误,指出该函数未定义。我因此使用了这个:

    RestTemplate restTemplate = new RestTemplate(); 
    ResponseEntity<MessageModel> retval = restTemplate.exchange("http://localhost:8080/products/batchUpdateProductPositions", 
            HttpMethod.PATCH, new HttpEntity<ProductPositionListModel>(pps), MessageModel.class);   
Run Code Online (Sandbox Code Playgroud)

它编译,但给了我一个错误:

I/O Error on PATCH request for "http://localhost:8080/products/batchUpdateProductPositions": Invalid HTTP method: PATCH
Run Code Online (Sandbox Code Playgroud)

在应用程序中,我在 Controller 类中定义了操作:

@RequestMapping(value = "/batchUpdateProductPositions", method = RequestMethod.PATCH)
public MessageModel batchUpdatePosition(
        @RequestBody ProductPositionListModel productPositionList)
        throws Exception {
    try {
        return productService.batchUpdatePosition(productPositionList);
    } …
Run Code Online (Sandbox Code Playgroud)

java rest junit resttemplate http-patch

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

为什么HTTP PATCH请求方法不是幂等的

它在HTTP Spec上提到PATCHnot幂等的.

幂等的基本定义是:

幂等HTTP方法是一种HTTP方法,可以多次调用而不会产生不同的结果

所以如果我们进行HTTP调用

PATCH /users/1
{
    "username": "dummyUser"
}
Run Code Online (Sandbox Code Playgroud)

无论我们在HTTP端点上面调用多少次,它总是意味着要将username用户更新1dummyUser.

PATCH对于更新任何资源的1个或多个属性的任何请求,这几乎相同.

那么为什么HTTP Spec指定PATCHnot幂等的呢?

specifications http http-patch

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

要为不受支持的PATCH返回的HTTP代码

我在dropwizard REST资源上实现了一个PATCH方法.目前只有要修补的资源属性的子集.目前只能实现更换操作.

如果我看到未PATCH支持的属性/路径请求,我应该返回哪个HTTP代码?如果请求不受支持addremove操作,我应该返回什么?

rest http dropwizard http-patch

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

使用 Spring Boot Java 的补丁请求

我的 OpenShift Api 补丁请求有问题。这是我的实际代码:


public static  HttpStatus PatchHTTPRequestCustomHeaders(String url, String data) {

        String Bearer = "ayJhbGciOiJSUzI1NiIs...";

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);     
        headers.set("Authorization", "Bearer "+Bearer);
        headers.set("X-HTTP-Method-Override",  "PATCH");
        headers.set("Content-Type", "application/json-patch+json");
        headers.set("Accept", "application/json");
        final HttpEntity<String> entity = new HttpEntity<String>(data, headers);
        RestTemplate restTemplate = new RestTemplate();

            ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.POST, entity, String.class, 1);
            if(response.getStatusCode() == HttpStatus.OK) {
                return HttpStatus.OK;
            }else {
                return null;
            }  
    }
Run Code Online (Sandbox Code Playgroud)

数据包含一个op replace or add or remove ...

PostMan 错误:500 内部服务器错误

春天:

2020-02-14 10:12:28.918 ERROR 14944 --- …
Run Code Online (Sandbox Code Playgroud)

java openshift http-patch spring-boot

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

HTTP PATCH方法。请求正文中的内容

我正在使用Symfony2开发REST API。我有一个预订系统,当管理员确认其预订后,我想向客户发送电子邮件。

我有一个预留资源,我们可以使用以下url验证预留:

PATCH本地主机/:id / validate

我想知道使用PATCH方法在验证资源时将电子邮件内容放入请求正文是否正确。

如果没有,正确的方法是什么?

谢谢,Mehdi。

rest http http-patch

0
推荐指数
1
解决办法
3834
查看次数