api接口对接如何实现,php如何对接api
创始人
2024-05-14 04:39:24
0

这篇文章来分享下api接口对接如何实现,还有源码,希望对新手有所帮助。

什么是API?

我的回答:API( 应用程序编程接口):一般来说,这是一套明确定义的各种软件组件之间的通信方法。

什么是API?我们不妨用一个小故事展示出来:

研发人员A开发了软件A,研发人员B正在研发软件B。

有一天,研发人员B想要调用软件A的部分功能来用,但是他又不想从头看一遍软件A的源码和功能实现过程,怎么办呢?

研发人员A想了一个好主意:我把软件A里你需要的功能打包好,写成一个函数;你按照我说的流程,把这个函数放在软件B里,就能直接用我的功能了!

其中,API就是研发人员A说的那个函数。

进一步解释:

比如c语言的fopen()函数来打开一个文件,感觉非常简单。

但是操作到底层是非常复杂的,打开文件需要扫描硬盘,找到我文件位置,然后读取部分数据,并放进i/o缓存中,放进内存。

这些数据都是0,1序列,还要对照ASCII表或者unicode表翻译成字符,再在显示器上显示出来。如果这个过程让程序员来完成,简直就是个噩梦。不可能的事。

怎么办呢?

操作系统就想了一个很好的办法。它预先把复杂的操作写在一个函数里面,编译成一个组件(一般是动态链接库)程序员只需要简单的调用这些函数就可以用完成复杂的工作。

这些封装好的函数就叫做API。

getMessage();$LabelArray[$content_tag_name] .= $e->getMessage();}break;default:
}echo serialize($LabelArray);function compose_article($title, $content) {$separator = compose_separator();return $title.$separator.$content;
}function compose_separator() {return PHP_EOL.'('.TITLE_SEPAR2.')'.PHP_EOL;
}function fix_separator($article) {return $article;
}function get_wyc_article($str) {global $url;$separator = compose_separator();$separator = str_replace(PHP_EOL, '', $separator);$wyc = curl_request($url, array('wenzhang'=>$str));$wyc_f = $wyc;$wyc = fix_separator($wyc);$wyc = explode($separator, $wyc);if (isset($wyc[0])){$wyc[0] = str_replace('标题:', '', $wyc[0]);$wyc[0] = str_replace('标题:', '', $wyc[0]);$wyc[0] = str_replace('目:', '', $wyc[0]);$wyc[0] = str_replace('目:', '', $wyc[0]);$wyc[0] = 'xx`xx'.$wyc[0];$wyc[0] = str_replace('xx`xx题', '', $wyc[0]);$wyc[0] = str_replace('xx`xx', '', $wyc[0]);}return $wyc;
}function get_wyc_title($str) {$title = get_wyc_article($str.PHP_EOL.PHP_EOL.PHP_EOL.$str.PHP_EOL.PHP_EOL.PHP_EOL.$str);$title = fix_newline($title);$title = explode(PHP_EOL, $title);return $title[0];
}function get_keywords($title, $contents) {$url_kw = 'http://api-2.78tp.com/nlp/kws.php?appid=';$kws = curl_request($url_kw, array('title'=>$title,'len'=>100,'text'=>$contents));return $kws;
}function remove_alt($contents) {$contents = preg_replace('/alt=\"(.*)\"/', '', $contents);return $contents;
}function fix_title($contents) {$punctuation_symbol = array('。', '?', ',', ':', ';', '、', '!','.',  '?',  ',',  ':',  ';', '!');$contents = str_replace($punctuation_symbol, '', $contents);return $contents;
}function br2newline($contents) {$contents = str_replace('
', PHP_EOL, $contents);$contents = str_replace('
', PHP_EOL, $contents);$contents = str_replace('
', PHP_EOL, $contents);$contents = str_replace('
', PHP_EOL, $contents);$contents = str_replace('
', PHP_EOL, $contents);$contents = str_replace('
', PHP_EOL, $contents);return $contents; }function newline2br($contnets) {$contnets = str_replace(PHP_EOL, "
", $contnets);$contnets = str_replace('


', '

', $contnets);return $contnets; }function delete_newline($contents) {$contents = fix_newline($contents);return $contents; }function reset_newline_win($contents) {// 优化换行符$contents = str_replace("\r\n", "\n", $contents);$contents = str_replace("\r", "\n", $contents);$contents = str_replace("\n", PHP_EOL, $contents);return $contents; }function fix_newline($data) {$data = str_replace("\r", "\n", $data);while(strpos($data, "\n\n") !== false) {$data = str_replace("\n\n", "\n", $data);}$data = str_replace("\n", PHP_EOL, $data);return $data; }function clean_contents($contents) {$sa = new cleanHtml; $sa->allow = array( 'src' ); $sa->exceptions = array( 'img' => array( 'src', 'alt' ), //'a' => array( 'href', 'title' ), 'iframe'=>array('src','frameborder'), ); $str = $sa->strip( $contents ); return $str; }function xfm_strong_str_replace_once($search, $replace, $subject) {$firstChar = strpos($subject, $search);if($firstChar !== false) {$beforeStr = substr($subject,0,$firstChar);$afterStr = substr($subject, $firstChar + strlen($search));return $beforeStr.$replace.$afterStr;} else {return $subject;} }//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies function curl_request($url,$post='',$cookie='', $returnCookie=0){if (! extension_loaded('curl')) {file_exists('./ext/php_curl.dll') && dl('php_curl.dll'); // 加载扩展}$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)');if (ini_get('open_basedir') == '' && strtolower(ini_get('safe_mode')) != 'on'){ curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);}curl_setopt($curl, CURLOPT_AUTOREFERER, 1);curl_setopt($curl, CURLOPT_REFERER, "http://XXX");if($post) {curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));}if($cookie) {curl_setopt($curl, CURLOPT_COOKIE, $cookie);}curl_setopt($curl, CURLOPT_HEADER, $returnCookie);curl_setopt($curl, CURLOPT_TIMEOUT, 150);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$data = curl_exec($curl);if (curl_errno($curl)) {return curl_error($curl);}curl_close($curl);if($returnCookie){list($header, $body) = explode("\r\n\r\n", $data, 2);preg_match_all("/Set\-Cookie:([^;]*);/", $header, $matches);$info['cookie'] = substr($matches[1][0], 1);$info['content'] = $body;return $info;}else{return $data;} }//echo $tag; // 计算中文字符串长度 function utf8_strlen($string = null) { // 将字符串分解为单元 preg_match_all("/./us", $string, $match); // 返回单元个数 return count($match[0]); }function reg_escape( $str ) { $conversions = array( "^" => "\^", "[" => "\[", "." => "\.", "$" => "\$", "{" => "\{", "*" => "\*", "(" => "\(", "\\" => "\\\\", "/" => "\/", "+" => "\+", ")" => "\)", "|" => "\|", "?" => "\?", "<" => "\<", ">" => "\>" ); return strtr( $str, $conversions ); } /** * Strip attribute Class * Remove attributes from XML elements * @author David (semlabs.co.uk) * @version 0.2.1 */ class cleanHtml{ public $str = ''; public $allow = array(); public $exceptions = array(); public $ignore = array(); public function strip( $str ) { $this->str = $str; if( is_string( $str ) && strlen( $str ) > 0 ) { $res = $this->findElements(); if( is_string( $res ) ) return $res; $nodes = $this->findAttributes( $res ); $this->removeAttributes( $nodes ); } return $this->str; } private function findElements() { # Create an array of elements with attributes $nodes = array(); preg_match_all( "/<([^ !\/\>\n]+)([^>]*)>/i", $this->str, $elements ); foreach( $elements[1] as $el_key => $element ) { if( $elements[2][$el_key] ) { $literal = $elements[0][$el_key]; $element_name = $elements[1][$el_key]; $attributes = $elements[2][$el_key]; if( is_array( $this->ignore ) && !in_array( $element_name, $this->ignore ) ) $nodes[] = array( 'literal' => $literal, 'name' => $element_name, 'attributes' => $attributes ); } } # Return the XML if there were no attributes to remove if( !$nodes[0] ) return $this->str; else return $nodes; } private function findAttributes( $nodes ) { # Extract attributes foreach( $nodes as &$node ) { preg_match_all( "/([^ =]+)\s*=\s*[\"|']{0,1}([^\"']*)[\"|']{0,1}/i", $node['attributes'], $attributes ); if( $attributes[1] ) { foreach( $attributes[1] as $att_key => $att ) { $literal = $attributes[0][$att_key]; $attribute_name = $attributes[1][$att_key]; $value = $attributes[2][$att_key]; $atts[] = array( 'literal' => $literal, 'name' => $attribute_name, 'value' => $value ); } } else $node['attributes'] = null; $node['attributes'] = $atts; unset( $atts ); } return $nodes; } private function removeAttributes( $nodes ) { # Remove unwanted attributes foreach( $nodes as $node ) { # Check if node has any attributes to be kept $node_name = $node['name']; $new_attributes = ''; if( is_array( $node['attributes'] ) ) { foreach( $node['attributes'] as $attribute ) { if( ( is_array( $this->allow ) && in_array( $attribute['name'], $this->allow ) ) || $this->isException( $node_name, $attribute['name'], $this->exceptions ) ) $new_attributes = $this->createAttributes( $new_attributes, $attribute['name'], $attribute['value'] ); } } $replacement = ( $new_attributes ) ? "<$node_name $new_attributes>" : "<$node_name>"; $this->str = preg_replace( '/'. reg_escape( $node['literal'] ) .'/', $replacement, $this->str ); } } private function isException( $element_name, $attribute_name, $exceptions ) { if( array_key_exists($element_name, $this->exceptions) ) { if( in_array( $attribute_name, $this->exceptions[$element_name] ) ) return true; } return false; } private function createAttributes( $new_attributes, $name, $value ) { if( $new_attributes ) $new_attributes .= " "; $new_attributes .= "$name=\"$value\""; return $new_attributes; } } ?>

参考:如何对接伪原创API 更加通俗讲:别人写好的代码,或者编译好的程序,提供给你使用,就叫做api。

因为你使用了别人的代码( 或者程序)中的某个函数,类,对象,就叫做使用了某个api。

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...