Ruta de API inválida


8

Hola, creé una API personalizada para el inicio de sesión del usuario, funciona bien. Pero intenté crear una API para obtener imágenes de categoría. está dando una ruta de API inválida para la API de Magento incorporada. Debajo están los archivos de configuración que estoy usando.

Config.xml

    <?xml version="1.0"?>
<config>
  <modules>
    <Mycustom_Masterapi>
      <version>1.0</version>
    </Mycustom_Masterapi>
  </modules>
  <global>
    <models>
      <masterapi>
        <class>Mycustom_Masterapi_Model</class>
      </masterapi>
    </models>
    <helpers>
      <masterapi>
        <class>Mycustom_Masterapi_Helper</class>
      </masterapi>
    </helpers>
  </global>
</config>

api.xml

<?xml version="1.0"?>
<config>
  <api>

    <resources>

      <masterapi_loginmodel translate="title" module="masterapi">
        <model>masterapi/loginmodel_api</model>
        <title>Demo Custommoduleapi API</title>
        <acl>masterapi/loginmodel</acl>
        <methods>
         <!-- <list translate="title" module="masterapi">
            <title>List of masterapi</title>
            <method>clogin</method>
          </list> -->
          <customerlogin translate="title" module="masterapi">
           <title>List of masterapi</title>
          </customerlogin>

        </methods>
      </masterapi_loginmodel>

       <masterapi_category translate="title" module="masterapi">
        <model>masterapi/category_api</model>
        <title>Demo category API</title>
        <acl>masterapi/category</acl>
        <methods>
         <!-- <list translate="title" module="masterapi">
            <title>List of masterapi</title>
            <method>clogin</method>
          </list> -->
          <getID translate="title" module="masterapi">
           <title>List of category</title>
          </getID>

        </methods>
      </masterapi_category>


    </resources>


    <resources_alias>
      <loginmodel>masterapi_loginmodel</loginmodel>
      <category>masterapi_category</category>
    </resources_alias>

    <v2>
      <resources_function_prefix>
         <loginmodel>masterapiLoginmodel</loginmodel>
          <category>masterapiCategory</category>
      </resources_function_prefix>
    </v2>

    <acl>
      <resources>
        <masterapi translate="title" module="masterapi">
          <title>Loginmodel</title>
          <sort_order>5</sort_order>
          <loginmodel translate="title" module="masterapi">
            <title>loginmodel data</title>
          </loginmodel>

           <category translate="title" module="masterapi">
            <title>loginmodel data</title>
          </category>

        </masterapi>

      </resources>
    </acl>
  </api>
</config>

wsdl.xml

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:typens="urn:{{var wsdl.name}}" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"
  name="{{var wsdl.name}}" targetNamespace="urn:{{var wsdl.name}}">

  <types>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:Magento">
      <import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/" />
      <complexType name="fieldInfo">
        <sequence>
          <element name="entity_id" type="xsd:string"/>
          <element name="name" type="xsd:string"/>
        </sequence>
      </complexType>
      <complexType name="fieldInfoArray">
        <complexContent>
          <restriction base="soapenc:Array">
            <attribute ref="soapenc:arrayType" wsdl:arrayType="typens:fieldInfo[]" />
          </restriction>
        </complexContent>
      </complexType>


      <!---Declare our types-->
            <complexType name="catalogCategoryID">
                <sequence>
                    <element name="category_id" type="xsd:string" />
                    <element name="category_name" type="xsd:string" />
                </sequence>
            </complexType>
       <!---Declare our input and output parameters-->
            <element name="catalogCategoryGetIDRequestParam">
                <complexType>
                    <sequence>
                        <element minOccurs="1" maxOccurs="1" name="sessionId" type="xsd:string" />
                        <element minOccurs="1" maxOccurs="1" name="category_name" type="xsd:string" />
                    </sequence>
                </complexType>
            </element>
            <element name="catalogCategoryGetIDResponseParam">
                <complexType>
                    <sequence>
            <!---here we use the type we declared earlier as our output parameter-->
                        <element minOccurs="1" maxOccurs="1" name="result" type="typens:catalogCategoryID" />
                    </sequence>
                </complexType>
            </element>
            <!---Boohoo-->


    </schema>
  </types>

  <message name="masterapiLoginmodelListRequest">
    <part name="sessionId" type="xsd:string" />
    <part name="user" type="xsd:string" />
     <part name="pass" type="xsd:string" /> 
  </message>

  <message name="masterapiLoginmodelListResponse">
    <part name="customlogin" type="xsd:string" />
  </message>



  <portType name="{{var wsdl.handler}}PortType">
    <operation name="masterapiLoginmodelCustomerlogin">
      <documentation>List of masterapi</documentation>
      <input message="typens:masterapiLoginmodelListRequest" />
      <output message="typens:masterapiLoginmodelListResponse" />
    </operation>

    <operation name="masterapiCategoryGetID">
      <documentation>List of masterapi</documentation>
      <input message="typens:masterapiCategoryCustomerloginRequest" />
      <output message="typens:catalogCategoryGetIDResponse" />
    </operation>

  </portType>


   <message name="masterapiCategoryCustomerloginRequest">
    <part name="sessionId" type="xsd:string" />
    <part name="category_name" type="xsd:string" />

  </message>

   <message name="catalogCategoryGetIDResponse">
        <part name="parameters" type="xsd:string" />
    </message>


  <binding name="{{var wsdl.handler}}Binding" type="typens:{{var wsdl.handler}}PortType">
    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http" />
    <operation name="masterapiLoginmodelCustomerlogin">
      <soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
      <input>
        <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
      </input>
      <output>
        <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
      </output>
    </operation>

     <operation name="masterapiCategoryGetID">
      <soap:operation soapAction="urn:{{var wsdl.handler}}Action" />
      <input>
        <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
      </input>
      <output>
        <soap:body namespace="urn:{{var wsdl.name}}" use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
      </output>
    </operation>

  </binding>



  <service name="{{var wsdl.name}}Service">
    <port name="{{var wsdl.handler}}Port" binding="typens:{{var wsdl.handler}}Binding">
      <soap:address location="{{var wsdl.url}}" />
    </port>
  </service>
</definitions>

mi archivo php: Api.php

<?php
// app/code/local/Envato/Customlogin/Model/Loginmodel/Api.php
class Mycustom_Masterapi_Model_Category_Api extends Mage_Api_Model_Resource_Abstract
{
  /**
 * retrieves Category ID based on category name
 *
 */
 public function getID($category_name){

 $category_model = Mage::getModel('catalog/category')->loadByAttribute('name',$category_name);
 $result = array();
 $result['category_id'] = $category_model->getId();
 $result['category_name'] = $category_name;

 return $category_name;
 }
}

Seguí este enlace este enlace . Hice cambios para el inicio de sesión del usuario, funciona muy bien. Pero quiero una API personalizada para obtener imágenes de categoría a lo largo del árbol de categorías. Pero cuando llamo "catalogCategoryTree" usando jabón, se da como "Ruta de API inválida". Por favor, hágame saber qué error en los archivos de configuración.

Respuestas:


0

Puede intentar cambiar su api.xml a algo similar a esto:

<?xml version="1.0"?>
<config>
    <api>
        <resources>
            <companygroupfacebookconnector translate="title" module="companygroup_facebookconnector">
                <model>CompanyGroup_FacebookConnector_Model_Api</model>
                <title>Product Resource</title>
                <acl>companygroupfacebookconnector</acl>
                <methods>
                    <productinfo translate="title" module="companygroup_facebookconnector">
                        <title>Retrieve Product Data</title>
                        <acl>companygroupfacebookconnector/product</acl>
                        <method>productInfo</method>
                    </productinfo>
                </methods>
                <faults module="companygroup_facebookconnector">
                    <data_invalid>
                        <code>100</code>
                        <message>Param is invalid.</message>
                    </data_invalid>
                    <not_exists>
                        <code>101</code>
                        <message>Item doesn't exist.</message>
                    </not_exists>
                </faults>
            </companygroupfacebookconnector>

            <companyfbcustomer translate="title" module="companygroup_facebookconnector">
                <model>CompanyGroup_FacebookConnector_Model_Api_Customer_Api</model>
                <title>Product Resource</title>
                <acl>companygroupfacebookconnector</acl>
                <methods>
                    <connectcustomer translate="title" module="companygroup_facebookconnector">
                        <title>Connect customer with Messenger</title>
                        <acl>companygroupfacebookconnector/customer</acl>
                        <method>connectCustomer</method>
                    </connectcustomer>
                </methods>
                <faults module="companygroup_facebookconnector">
                    <data_invalid>
                        <code>100</code>
                        <message>Param is invalid.</message>
                    </data_invalid>
                    <not_exists>
                        <code>101</code>
                        <message>Item doesn't exist.</message>
                    </not_exists>
                    <is_connected>
                        <code>102</code>
                        <message>Customer is connected.</message>
                    </is_connected>
                    <unexpected>
                        <code>105</code>
                        <message>Unexpected Error.</message>
                    </unexpected>
                </faults>
            </companyfbcustomer>
        </resources>

        <v2>
            <resources_function_prefix>
                <companygroupfacebookconnector>companygroupfacebookconnectorProduct</companygroupfacebookconnector>
               <companyfbcustomer>companyfbcustomerCustomer</companyfbcustomer>
            </resources_function_prefix>
        </v2>
        <acl>
            <resources>
                <companygroupfacebookconnector translate="title" module="companygroup_facebookconnector">
                    <title>FbBot Api</title>
                    <sort_order>1</sort_order>
                    <product translate="title" module="companygroup_facebookconnector">
                        <title>Product Data</title>
                    </product>

                    <customer translate="title" module="companygroup_facebookconnector">
                        <title>Customer Info</title>
                    </customer>
                </companygroupfacebookconnector>
            </resources>
        </acl>
    </api>
</config>

Ahora puede usar companygroupfacebookconnector.productinfopara ejecutar el método.

class CompanyGroup_FacebookConnector_Model_Api extends Mage_Api_Model_Resource_Abstract
{

    public function productInfo($product_code)
    {
        Your code here
    }
}

o companyfbcustomer.connectcustomerpara:

class CompanyGroup_FacebookConnector_Model_Api_Customer_Api extends Mage_Api_Model_Resource_Abstract
{

    public function connectCustomer($customerId)
    {
          Your code here
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.