2015-09-16 7 views
8

Ich möchte den folgenden Befehl in Elixir mit HTTPoison-Bibliothek ausführen.Wie führe ich DELETE in Elixir mit HTTPoison durch?

$ curl -X DELETE -H "expired: 1442395800" -H "signature: ******************" -d '{"api_key":"***************","delete_path":"*******","expired":"****"}' https://cdn.idcfcloud.com/api/v0/caches 
{"status":"success","messages":"We accept the cache deleted successfully."} 

Wenn ich das Dokument überprüfen, wie HTTPoison

zu DELETE in
def delete!(url, headers \\ [], options \\ []), do: request!(:delete, url, "", headers, options) 

Es gibt nur url und header benötigt. Also, wo sollte ich die Anfrage Körper (die Json Körper in curl)?

In Elixir, habe ich versucht,

req_body = "{\"api_key\":\"#{api_key}\",\"delete_path\":\"#{delete_path}\",\"expired\":\"#{expired}\"}" 

url = "https://cdn.idcfcloud.com/api/v0/caches"                       

response = HTTPoison.delete!(url, header, [req_body]) 

Aber ist das nicht funktionieren scheint. Kann jemand bitte sagen, wie man es richtig macht?

Antwort

6

Wie Sie festgestellt haben, sendet HTTPoison.delete!/3 eine "" als Post-Körper. Es wurden Fragen hier gewesen wäre es, wenn ein Körper für eine DELETE-Anforderung gültig ist - Is an entity body allowed for an HTTP DELETE request?

Sie können sehen, aber Bypass diese Funktion und rufen request!/5 direkt:

req_body = "{\"api_key\":\"#{api_key}\",\"delete_path\":\"#{delete_path}\",\"expired\":\"#{expired}\"}" 

url = "https://cdn.idcfcloud.com/api/v0/caches"                       

response = HTTPoison.request!(:delete, url, req_body, header) 

ich eine andere Frage beantwortet haben, die mehr gibt Informationen über die Generierung eines Postkörpers - Create Github Token using Elixir HTTPoison Library

+0

vielen Dank, es hat funktioniert !!!! –

+0

Ich möchte, dass das HTTPoison-Team diesen Anwendungsfall berücksichtigt ... Die Stripe-API akzeptiert beispielsweise bestimmte Flags in Löschanforderungen (wenn Sie beispielsweise ein Abonnement abbrechen, aber bis zum Ende des Abrechnungszeitraums aktiv bleiben möchten, setzen Sie ' at_period_end' zu "true"), also müssen Sie 'HTTPoison.request' mit dem Parameter': delete' verwenden, damit es funktioniert. –

Verwandte Themen