php magento 开发,magento2 开发Api接口实例

本文详细介绍了在Magento2中创建API接口的步骤,包括创建module.xml和registration.php来初始化模块,配置di.xml和webapi.xml以设定路由和访问权限。在Model中实现了HelloInterface接口,并强调了接口注释的重要性,因为它们用于指定参数类型和返回类型。此外,还展示了如何通过REST和SOAP方式测试API,并提及了ACL配置以控制访问权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

magento2 开发Api接口实例

新建一个模块

第一步先创建module.xml初始化模块

模块配置 – etc/module.xml

然后新建Registration

注册模块 – registration.php

MagentoFrameworkComponentComponentRegistrar::register(

MagentoFrameworkComponentComponentRegistrar::MODULE,     'Max_Hello',     __DIR__ );

API 的配置

这里需要建立两个xml文件di.xml和webapi.xml,其中di用于依赖注入,而webapi用于设定路由和指定方法名称,同时设定访问权限

Web API 配置 – etc/webapi.xml

我们使用anonymous设置,让其可以直接通过url访问

注入声名 – etc/di.xml

创建接口文件 – Api/HelloInterface.php

namespace MaxHelloApi;

interface HelloInterface{

/**

* Returns greeting message to user

*      * @api

* @param string $name Users name.

* @return string Greeting message with users name.

*/

public function name($name);

}

新建Model – Model/Hello.php

namespace MaxHelloModel;

use MaxHelloApiHelloInterface;

class Hello implements HelloInterface{

/**

* Returns greeting message to user

*      * @api

* @param string $name Users name.

* @return string Greeting message with users name.

*/

public function name($name) {

return "Hello, " . $name;

}

}

这里必须在声名方法前加上正确格式的注释,注明参数类型和返回类型,不然接口会报Class does not exist

这我猜测因为它是基于soap的接口,但php是弱类型命名的,所以在类似WSDL中其他强类型命名的想调用,出于考虑Magento强制把类型定义放到注释上,但这是一个大坑,如果不知道的人很可能也会遇到这个问题。

测试Rest Api

Rest Api格式如下:

http://{domain_name}/rest/V1/{method}/{attribute}/{value}

浏览器直接打开地址如下:

如: http://magento2.dev/rest/V1/hello/name/world

浏览器会显示以下结果:

Hello, world

SOAP方式访问:

$proxy = new SoapClient('http://magento2.dev/index.php/soap/default?wsdl&services=maxHelloV1');

$result = $proxy->maxHelloV1Name(array("name"=>"world"));

var_dump($result);

SOAP打印结果

object(stdClass)#2 (1) {   ["result"]=>  string(10) "Hello, world"}

ACL.XML

若不在WebApi使用anonymous权限,我们需要在etc文件夹新建一个acl.xml文件

如: – etc/acl.xml

在这种情况下,我们需要在webapi.xml的resource节点中添加“Max_Hello ::hello”,这种操作后就可以不使用anonymous了。

参考:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值