Name
gun:patch - Apply a set of changes to a resource
Description
patch(ConnPid, Path, Headers)
-> patch(ConnPid, Path, Headers, #{})
patch(ConnPid, Path, Headers, ReqOpts)
-> StreamRef
patch(ConnPid, Path, Headers, Body)
-> patch(ConnPid, Path, Headers, Body, #{})
patch(ConnPid, Path, Headers, Body, ReqOpts)
-> StreamRef
ConnPid :: pid()
Path :: iodata()
Headers :: gun:req_headers()
Body :: iodata()
ReqOpts :: gun:req_opts()
StreamRef :: gun:stream_ref()
Apply a set of changes to a resource.
The behavior of this function varies depending on whether a body is provided.
The function patch/3,4
does not send a body. It must be sent separately using gun:data(3).
The function patch/4,5
sends the entire request, including the request body, immediately. It is therefore not possible to use gun:data(3) after that. You should provide a content-type header. Gun will set the content-length header automatically.
The body sent in this request should be a patch document with instructions on how to update the resource.
Arguments
- ConnPid
The pid of the Gun connection process.
- Path
Path to the resource.
- Headers
Additional request headers.
- Body
Request body.
- ReqOpts
Request options.
Return value
A reference that identifies the newly created stream is returned. It is this reference that must be passed in subsequent calls and will be received in messages related to this new stream.
Changelog
- 2.0: Implicit body detection has been removed. The body must now be provided either directly (even if empty) or using separate calls.
- 1.0: Function introduced.
Examples
Patch a resource
StreamRef = gun:patch(ConnPid, "/users/1",
[{<<"content-type">>, <<"application/json-patch+json">>}],
<<"[{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\"}]">>).
Patch a resource in multiple calls
StreamRef = gun:patch(ConnPid, "/users/1", [
{<<"content-type">>, <<"application/json-patch+json">>}
]).
gun:data(ConnPid, StreamRef, fin,
<<"[{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\"}]">>).
Patch a resource with request options
StreamRef = gun:patch(ConnPid, "/users/1",
[{<<"content-type">>, <<"application/json-patch+json">>}],
<<"[{\"op\":\"add\",\"path\":\"/baz\",\"value\":\"qux\"}]">>,
#{reply_to => ReplyToPid}).
See also
gun(3), gun:post(3), gun:put(3), gun:await(3), gun:await_body(3), gun_push(3), gun_inform(3), gun_response(3), gun_data(3)