A friendly reminder: When talking about networking you should have a care how you use the terminology, lest confussion arises.
Those "verbs" you talk about have little to do with RESTful APIs, but with WEBDAV. See here:
WebDAV Ressources.
Also, if you want to build a generic solution you should add a functions to send multipart- in addition to URL-encoded requests. Most Web APIs I know of expect them, since they deal with relatively big objects (documents, images, etc.) that can't be encoded in the URL.
For example, here's how we defined some net-helpers when we built our (Delphi) Flickr API objects:
{ Calls to Web Sites' APIs like p.e. Flickr's }
{HTTP service request--url-encoded params
Make a request using HTTP Method, passing parameters
@code(Params) in url-encoded form. }
function WebMethodCall(const BaseURL: String; Params: TStrings;
Method: TReqMethod = rqPost): String; overload;
{HTTP service request--w/out params
Make a request using HTTP Method passing no parameters
(unless already encoded by the user in @code(BaseURL).}
function WebMethodCall(const BaseURL: String;
Method: TReqMethod = rqPost): String; overload;
{HTTP service request--Multipart/Form-Data
Make a request using HTTP POST and passing parameters
as a Multipart/Form-Data stream.
Used, generally, to upload a file to a server.
}
function WebMethodCall(const BaseURL: String;
FormData: TIdMultiPartFormDataStream): String; overload;