Meilleures pratiques pour le mappage des méthodes d'API REST aux beans de données

Suivez l'exemple de code et les conseils de codage pour vous assurer que vos services de bean de données REST nouveaux ou personnalisés sont conformes aux meilleures pratiques HCL Commerce.

Procédure

  • L'exemple de code suivant appelle un bean de données non protégé et un bean de données protégé dans le gestionnaire de ressources du bean de données :
    
    // CatalogDataBean is a non-protected data bean
    
    // when there is no need to add/update/delete custom request properties, setting
    // to null will cause the code to read them from the content
    TypedProperty requestProperties = null;
    
    CatalogDataBean catalogDB = new CatalogDataBean();
    response = activateDataBeanWithContext(accessProfile, catalogDB, requestProperties, responseFormat);
    
    // OrganizationDataBean is a protected databean
    
    // when there is no need to add/update/delete custom request properties, setting
    // to null will cause the code to read them from the content
    TypedProperty requestProperties = null;
                
    OrganizationDataBean organizationDB = new OrganizationDataBean();
    response = activateDataBeanWithContext(accessProfile, organizationDB, requestProperties, responseFormat);
    
        /**
         * This methods sets up the BCS by calling startRequest(),
         * activates the databean, and then ends the BCS by calling
         * endRequest(BusinessContextService).
         *
         * @param accessProfile the access profile
         * @param dataBean the databean to be activated
         * @param requestProperties the request properties
         * @param responseFormat the response format
         * @return the response
         */
    protected Response activateDataBeanWithContext(String, DataBean, TypedProperty, String);
    
  • L'exemple de code suivant génère les propriétés de réponse renvoyées par le bean de données. Remplacez la méthode suivante dans le gestionnaire de ressources de bean de données :
    
    protected TypedProperty composeDataBeanResponse(TypedProperty requestProperties, String accessProfile,
                DataBean dataBean) throws Exception {
            // default implementation: return empty responseProperties
            TypedProperty responseProperties = super.composeDataBeanResponse(requestProperties, accessProfile, dataBean);
            
            OrganizationDataBean organizationDB = (OrganizationDataBean)dataBean;
            responseProperties.put("displayName", organizationDB.getDisplayName());
            responseProperties.put("distinguishedName", organizationDB.getDistinguishedName());
            
            return responseProperties;
        }
    
        /**
         * This method constructs the data bean response.
         *
         * @param requestProperties the request properties
         * @param accessProfile the access profile
         * @param dataBean the activated data bean
         * @return the response properties
         * @throws Exception the exception occurs
         */
    protected TypedProperty composeDataBeanResponse(TypedProperty, String, DataBean) throws Exception;
    
  • L'exemple de code suivant active plusieurs beans de données dans un gestionnaire de ressources personnalisé :
    
    	                    // sample custom code to manipulate the request properties
                        TypedProperty requestProperties = initializeRequestPropertiesFromRequestMap(responseFormat);
                        requestProperties.put("storeId", storeId);
    
                        StoreDataBean storeDB = new StoreDataBean();
                        activateDataBean(storeDB, requestProperties, responseFormat);
                        
                        TypedProperty responseProperties = new TypedProperty();
    
                        // custom code to examine activated data bean and add properties to the
                        // response properties based on accessProfile parameter
                        addToResponseAndRequest(responseProperties, requestProperties, accessProfile, storeDB);
    
                        // might have custom code to manipulate the request properties
                        CatalogDataBean catalogDB = new CatalogDataBean();
                        activateDataBean(catalogDB, requestProperties, responseFormat);
    
                        // custom code to examine activated data bean and add properties to the
                        // response properties based on accessProfile parameter
                        addToResponseAndRequest(responseProperties, requestProperties, accessProfile, catalogDB);
                        
                        response = generateResponseFromHttpStatusCodeAndRespData(responseFormat, responseProperties.getMap(), HttpStatus.OK);
                        endRequest(bcs);
    
        /**
         * This method creates a command context and associates the request properties to the command
         * context created.  It then passes both the data bean and the command context to the data bean
         * manager for data bean activation.
         *
         * @param dataBean the data bean to be activated
         * @param requestProperties the request properties
         * @param responseFormat the responseFormat
         * @throws Exception the exception occurs
         */
    protected void activateDataBean(DataBean, TypedProperty, String) throws Exception;
    
  • Chaque ressource REST contient des informations, telles que des URL, des descriptions et des exemples de données d'entrée et de données de sortie dans l'API REST HCL Commerce :