zervnet / pdns

PowerDNS
GNU General Public License v2.0
0 stars 0 forks source link

REST API Feature: Create the possibility to delete cryptokeys by id using rest api. #1

Closed MrM0nkey closed 8 years ago

MrM0nkey commented 8 years ago

Feature

This feature should delete cryptokeys by their id.

The link leads to the TODO in the api_spec.md from pdns repo.

For protocol guidelines i would recommand this:

DELETE specification

DELETE is pretty easy to understand. It is used to delete a resource identified by a URI.

On successful deletion, return HTTP status 200 (OK) along with a response body, perhaps the representation of the deleted item (often demands too much bandwidth), or a wrapped response (see Return Values below). Either that or return HTTP status 204 (NO CONTENT) with no response body. In other words, a 204 status with no body, or the JSEND-style response and HTTP status 200 are the recommended responses.

HTTP-spec-wise, DELETE operations are idempotent. If you DELETE a resource, it's removed. Repeatedly calling DELETE on that resource ends up the same: the resource is gone. If calling DELETE say, decrements a counter (within the resource), the DELETE call is no longer idempotent. As mentioned previously, usage statistics and measurements may be updated while still considering the service idempotent as long as no resource data is changed. Using POST for non-idempotent resource requests is recommended.

There is a caveat about DELETE idempotence, however. Calling DELETE on a resource a second time will often return a 404 (NOT FOUND) since it was already removed and therefore is no longer findable. This, by some opinions, makes DELETE operations no longer idempotent, however, the end-state of the resource is the same. Returning a 404 is acceptable and communicates accurately the status of the call

MrM0nkey commented 8 years ago

This feature is finished. It handles DELETE requests for URL /api/v1/servers/:server_id/zones/:zone_name/cryptokeys/:cryptokey_id . It Deletes a key from :zone_name specified by :cryptokey_id.

Server Answers:

Case 1: zone_name not found

The server returns 404 Not Found

Case 2: the backend returns true on removal. This means the key is gone.

The server returns 200 No Content

Case 3: the backend returns false on removal. An error occoured.

The sever returns 422 Unknown Status with message "Could not DELETE :cryptokey_id"