mojo 接口示例

<pre name="code" class="python">use Mojolicious::Lite;
use JSON qw/encode_json decode_json/;  
use Encode;
no strict;
no warnings;
use JSON; 
use POSIX;
# /foo?user=sri
 get '/api/env' => sub {
   my $c = shift;
     my $env = $c->param('env');
     my  $ip = $c->param('ip');
      
     if ($env){
              use DBI;
my $dbName = 'oadb';  
my $dbUser = 'query';  
my $dbUserPass = 'kjk7787czcb';
my @arr2="";  
my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database " ;
my $hostSql = qq{select  IP,INFO,ENV from  machine_info  where ENV='env-$env' }; 
my ($a1, $a2, $a3,$a4,$a5,$a6,$a7,$a8,$a9);  
my $selStmt = $dbh->prepare($hostSql);  
$selStmt->bind_columns( $a1, $a2, $a3);  
$selStmt->execute();  
while( $selStmt->fetch() ){ push (@arr2, "$a1  $a2  $a3" );

       };
         $c->render(json => @arr2);
}elsif($ip){

use DBI;  
my $dbName = 'oadb';  
my $dbUser = 'query';  
my $dbUserPass = 'kjk7787czcb';
my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database " ;
my $hostSql = qq{select  IP,INFO,ENV from  machine_info  where IP='$ip' };   
my ($a1, $a2, $a3,$a4,$a5,$a6,$a7,$a8,$a9); 
my @arr2="";
my $selStmt = $dbh->prepare($hostSql);  
$selStmt->bind_columns(undef, $a1, $a2, $a3);  
$selStmt->execute();  
while( $selStmt->fetch() ){ 
push (@arr2, "$a1  $a2  $a3" )
};
 #sleep (30);
 $c->render(json => @arr2);
 }};

 get '/api/bus' => sub {
my $c = shift;
    my  $bus= $c->param('bus');
     my  $flag=$c->param('flag');
 if( ($bus)  || ($flag) ) {
    use URI::Escape;
use Encode;
use JSON qw/encode_json decode_json/;
my $area="杭州";
$area=uri_escape_utf8("$area"); 
use LWP::UserAgent;
my  $ua = LWP::UserAgent->new;
my  @header = (
    'accept'=> "application/json",
    'content-type'=> "application/json",
    'apikey'=> "3074a7f9926a4bbb484aa8bb366e5b87",
    'User-Agent' => "Mozilla/8.0"
    );
my $url = "http://apis.baidu.com/xiaota/bus_lines/buses_lines?city=$area&bus=$bus&direction=$flag";
my $request = HTTP::Request->new(GET=>"$url");
$request->header(@header);
my $response = $ua->request($request); 
 $content= $response->decoded_content;
 $content =~ s/\u([0-9a-fA-F]{4})/pack("U",,hex($1))/eg; 
 $content  = encode_utf8($content);
my $json_out = $content ; 

$json_out = decode_json($content);

@bus="";
#
foreach (@{($json_out->{data}->{stations})}){$bus="$_->{stateName}";push (@bus ,$bus)};
#$client->reply_msg($msg,"@bus")
print "@bus is @bus
";
$c->render(json => @bus);

                   };
				   };

 get '/api/ipsearch' => sub {
 my $c = shift;
  my  $ip=$c->param('ip');
  if ($ip){
use LWP::UserAgent;
my  $ua = LWP::UserAgent->new;

 my $host = "http://ip.taobao.com/service/getIpInfo.php?ip=$ip";
my $request = HTTP::Request->new(GET=>"$host");
my $response = $ua->request($request);
my  $content= $response->decoded_content;
 $content =~ s/\u([0-9a-fA-F]{4})/pack("U",,hex($1))/eg;  
  $content=encode(utf8,$content);
  $json_out       = decode_json($content);
 
 $c->render(json =>  $json_out->{data} );
				   };
				    };

get '/api/update' => sub {
my $dbName = 'oadb';  
my $dbUser = 'query';  
my $dbUserPass = 'kjk7787czcb';
my  $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass,{
                          RaiseError => 1,
                          AutoCommit => 0
                        }) or die "can't connect to database " ;
   my $c = shift;
my  $id=$c->param('id');
eval{
$dbh->do("update query.test set id=100 where id =$id") or $!;
$dbh->commit();
 $c->render(text =>  "update successed" );

};

if( $@ ) {
   #warn "Database error: $DBI::errstr
";
    	 $dbh->rollback(); #just die if rollback is failing 
          $c->render(text =>  "update failed" );
    		 	 };
};
				   
get '/api/getcode' => sub{
  my $c = shift;
  my $env = $c->param('env');
  my  $phone = $c->param('phone');
  print "$env is $env
";
  print "$phone is $phone
";
  

  
  if ($env eq "zj"){
@arr1=();
@arr2=();
$str="";
@arr_out=();
@arr=();

  my $starttime=strftime("%Y%m%d%H%M%S",localtime());
print "starttime is $starttime
";
open (LOG1 ,"<",'/data01/applog_backup/zj-api01-catalina.out') or die  $!;
                     while (<LOG1>) {
					#2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
								 
					if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_;
					
					my $d=encode_utf8('验证');
					next if ($str !~ /$d/);
					print "$str is $str
";
					push (@arr1 ,$str);
					}};
					
					close LOG1;
					
				
					
					open (LOG2 ,"<",'/data01/applog_backup/zj-api02-catalina.out') or die  $!;
					while (<LOG2>) {
                  
					 
					if (($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/)  ){$str= $_; 
					
					my $d=encode_utf8('验证');
					next if ($str !~ /$d/);
					print "$str is $str
";
					push (@arr2  ,$str);
					}};
					
					close LOG2;
					
		my @arr=($arr1[-1], $arr2[-1]);			
			print "@arr ---> @arr
";		

if  (($arr1[-1]) or  ($arr2[-1])){

foreach (@arr){  
##2015-11-04 15:51:54,134 DEBUG com.zjzc.thirdparty.sms.SMSSendThread 

##2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
   if ($_ =~  /([0-9]{4}-[0-9]{1,2}-[0-9]{2}s+[0-9]{2}:[0-9]{2}:[0-9]{2}.*?)s+(.*?Send message:)s*(.*?)(tos+phoneNo:s*[0-9]{11}).*/){
	
	$a1=$1;
	$a2=$2;
	$a3=$3;
	$a4=$4;
    
	##微信是UTF-8字符集
	
	
	my 	$endtime=strftime("%Y%m%d%H%M%S",localtime());
	
	my $d=encode_utf8('验证');
	if ($a3 =~/$d/){ 
	#$msg->reply("@$friend $a1-$a3-$a4");
	print "come in
";
	
	$a3=decode_utf8("$a3");
	##encode("utf8",decode("gbk","格式为:中均/温金 客户手机号"))
	 #@content=($a1,$a3,$a4);
	 my @content=("$a1","$a3","$a4");
	 my $href= @content;
	 push (@arr_out ,$href);
	
	
	print "endtime is $endtime
";
                  }
				                              };
           };
    $c->render(json =>  @arr_out );
	
                                      }
else{ $a5="$phone--ZJ没有找到需要的验证码信息";

$c->render(text =>  "$a5" );

   }
}elsif($env eq "wj"){
@arr1=();
@arr2=();
$str="";
@arr_out=();
@arr=();

my $starttime=strftime("%Y%m%d%H%M%S",localtime());
print "starttime is $starttime
";
open (LOG1 ,"<",'/data01/applog_backup/wj-api01-catalina.out') or die $!;
                                 while (<LOG1>) {
								#2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
								 
					if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/) ){$str=$_;
					my $d=encode_utf8('验证');
						 next if ($str !~ /$d/);
						 print "$str is $str
";
					push (@arr1 ,$str);
					}};
					
					close LOG1;
					
				
					
					open (LOG2 ,"<",'/data01/applog_backup/wj-api02-catalina.out') or die  $!;
					while (<LOG2>) {
                  
					 
					if ( ($phone) and ($_ =~/$phone/) and ($_ =~/SMSUtils/)  ){$str=$_; 
					my $d=encode_utf8('验证');
							 next if ($str !~ /$d/);
							  print "$str is $str
";
					push (@arr2  ,$str);
					}};
					
					close LOG2;
					
		my @arr=($arr1[-1], $arr2[-1]);			
			print "@arr ---> @arr
";		

if  (($arr1[-1]) or  ($arr2[-1])){

foreach (@arr){  
##2015-11-04 15:51:54,134 DEBUG com.zjzc.thirdparty.sms.SMSSendThread 

##2016-03-09 09:35:12,380 INFO com.zjzc.thirdparty.sms.SMSUtils - Send message:您的验证码为132435,本验证码5分钟内有效。 to phoneNo:18072722237 succeed!
   if ($_ =~  /([0-9]{4}-[0-9]{1,2}-[0-9]{2}s+[0-9]{2}:[0-9]{2}:[0-9]{2}.*?)s+(.*?Send message:)s*(.*?)(tos+phoneNo:s*[0-9]{11}).*/){
	
	$a1=$1;
	$a2=$2;
	$a3=$3;
	$a4=$4;
    
	##微信是UTF-8字符集
	
	
	my 	$endtime=strftime("%Y%m%d%H%M%S",localtime());
	
	my $d=encode_utf8('验证');
	if ($a3 =~/$d/){ 
	#$msg->reply("@$friend $a1-$a3-$a4");
	print "come in
";
	
	$a3=decode_utf8("$a3");
	##encode("utf8",decode("gbk","格式为:中均/温金 客户手机号"))
	 #@content=($a1,$a3,$a4);
	 my @content=($a1,$a3,$a4);
	 my $href= @content;
	 push (@arr_out ,$href);
	# print "@arr_out is @arr_out
";
	#$c->render(text =>  ("$a1,$a3,$a4") );
	
	print "endtime is $endtime
";
                  }
				                              };
           };
    $c->render(json =>  @arr_out );
	
                                      }
else{ $a5="$phone--WJ没有找到需要的验证码信息";

$c->render(text =>  "$a5" );

   }
  

               }
  

};

  app->start;






                                    
原文地址:https://www.cnblogs.com/hzcya1995/p/13350907.html