clpsharp has asked for the wisdom of the Perl Monks concerning the following question:

Hi: Does anybody know or can give me an example of how to make the root url for a Restful API request configurable at the command line or in a settings file using perl? For example: ./tests.pl --url examplewebsite.com For example, right now I am hardcoding the url on each method that I created to test our restful API. This test should be used by anybody in any environment. I don't want to hard code the url in each method, at least not the http://3examplewebsite.com part. Ideally, I would like to use a relative path like "/sessions? -X post -u ee45b45b5-b471-472d-96e4-481c65174ad0:4d808028-4c73-4489-b9b4-b05b296aa3b0 -d 'username=someusername&password=password&" in the method or something like that. My methods use curl to call our restful API. Example: sub login{          my $login_info = `curl -s http://examplewebsite.com/sessions? -X post -u ee45b45b5-b471-472d-96e4-481c65174ad0:4d808028-4c73-4489-b9b4-b05b296aa3b0 -d 'username=someusername&password=somepassword&'` or die "cannot login to account"; ... Thank you, Claudia
  • Comment on how to make a url for a Restful API request configurable at the cli or config file

Replies are listed 'Best First'.
Re: how to make a url for a Restful API request configurable at the cli or config file
by Khen1950fx (Canon) on Jun 07, 2010 at 00:12 UTC
    Remember to put <code></code> tags around your code. I simplified and cleaned up your code:
    #!/usr/bin/perl use strict; use ExtUtils::MakeMaker qw(prompt); my $curl_info = prompt(\&login); if ($curl_info == 0) { print "Login successful\n"; } else { die "Login not successful\n"; } sub login { system("curl -s -u user:password -d 'ee45b45b5-b471-472d-96e4-481c65174ad0:4d808028-4c73-4489-b9b4- +b05b296aa3b0' -X POST http://localhost"); } exit 0;
    Update: To address the CLI question, I used this. At the cmdline, type
    test.pl http://www.examplesite.com/sessions?
    #!/usr/bin/perl use strict; use ExtUtils::MakeMaker qw(prompt); use WWW::Curl::Simple; print $WWW::Curl::Simple::VERSION; my $url = shift @ARGV; my $curl = WWW::Curl::Simple->new; my $curl_info = prompt(\&login); if ($curl_info == 0) { print "Login successful\n"; } else { die "Login not successful\n"; } sub login { system("curl -s -u user::password -d 'ee45b45b5-b471-472d-96e4-481c65174ad0:4d808028-4c73-4489-b9b4- +b05b296aa3b0' -X POST --url $url"); } exit 0;