>api接口主要接口主要解决的问题
* [ ] 接口被其它网站恶意盗刷
* [ ] 防止接口被前端重复提交
* [ ] 提高接口使用的可控制性
* [ ] 降低开发接口的成本
>[danger]在api接口开发中,凡是需要强制用户登录的接口,控制器中方法的名称【action】的前缀为"member_",当检测到【action】的前缀为"member_",接口会先去检测用户登录信息,如果用户未登录,接口返回 {"err":"1","code":"10207","content":"用户未登录"}
, 需要注意的是api不再使用session,用户信息的获取是通过cowcms_userid参数获取,当用户登录后会返回cowcms_userid的值,前端可以将该值保存起来,在需要强制用户登录的接口访问时携带该参数,后端api直接可以通过$this->userInfo获取用户信息.
## 接口开发
```
namespace xxxxxx;
use api\Api;
class interface extends Api
{
/*************************************************************
* member_getInfo 需要强制登录的接口,在调用该接口时,必须要传递cowcms_userid
* return json 返回结果
*************************************************************/
public function member_getInfo()
{
$userInfo = $this->userInfo;//获取的登陆用户信息
return $this->returnData($userInfo);
}
/*************************************************************
* getInfo 不需要强制登录的接口,返回文字列表
* return json 返回结果
*************************************************************/
public function getInfo()
{
$userInfo = $this->userInfo;//如果用户登录$userInfo为用户信息,如果没登录为false
return $this->returnData(["测试"]);
}
}
```
>cowcms_userid值的获取 方式
* [ ] 当控制器继承了 Member或者Memberbase类时,并且用户登录成功可以获取该值
```
namespace app\signed\controller;
use user\Member;
class Signedajax extends Member
{
function getCowcmsUserid()
{
$userInfo = $this -> userInfo;
echo $userInfo['cowcms_userid'];
}
}
```
```
namespace app\signed\controller;
use user\Memberbase;
class Signedajax extends Memberbase
{
function getCowcmsUserid()
{
$userInfo = $this -> userInfo;
echo $userInfo['cowcms_userid'];
}
}
```
* [ ] 如果控制器没有继承Member或者Memberbase类,用户进行登录操作时
```
namespace app\signed\controller;
class login
{
function login()
{
/*用户登陆代码*/
$userInfo = ['id'=>10,"......"];
$cowcms_userid = exeFun('setCowcmsUserid',[$userInfo['id']],'member');
echo $cowcms_userid ;
}
}
```