Admin components requests

Hallo Leute,

ich versuche über eine Adminkomponente für v6.3.3.1 ein Request zu machen, aber anscheinend hat sch die Api verändert. Vielleicht kann mir einer helfen, wie ich das Problem am besten löse.

 

{
  template,
  inject: [
    'pluginService',
  ],
  methods: {
    foo() {
      const headers = this.pluginService.getBasicHeaders();
      return this.pluginService.httpClient.post('/foo/bar', {headers}).then((response) => {
        const res = Shopware.Classes.ApiService.handleResponse(response);
        // do stuff
      });
    },
  },
}

Kriege dann diese Fehlermeldung:
 

{„errors“:[{„status“:„400“,„code“:„FRAMEWORK__WRITE_MALFORMED_INPUT“,„title“:„Bad Request“,„detail“:„Expected data to be array.“,„meta“:{„parameters“:}}]}

Hoffe ihr könnt mir weiterhelfen! Danke sehr!

  1. Die post methode benötigt 3 Parameter
  2. Headers ist im falschen Format, es muss { headers: headers } sein…

oder bau dir einen eigenen service

import ApiService from 'src/core/service/api.service';

class FoundationApiService extends ApiService {
    constructor(httpClient, loginService, apiEndpoint = '') {
        super(httpClient, loginService, apiEndpoint);
    }

    get(path) {
        const apiRoute = this.getApiBasePath() + path;
        return this.httpClient.get(
            apiRoute,
            {
                headers: this.getBasicHeaders()
            }
        ).then((response) => {
            return ApiService.handleResponse(response);
        });
    }

    post(path, data) {
        const apiRoute = this.getApiBasePath() + path;
        return this.httpClient.post(
            apiRoute,
            data,
            {
                headers: this.getBasicHeaders()
            }
        ).then((response) => {
            return ApiService.handleResponse(response);
        });
    }
}

export default FoundationApiService;

 

Hello If you using Get method then call api like 

careerdelete function name 

  careerdelete: function (item) {
            const headers = this.pluginService.getBasicHeaders();
            
            return this.pluginService.httpClient
                .get(’/shipcloud/deletelabel/’, {headers})
                .then((response) => {
                    location.reload(true);
                }).catch(error => {

                });
        },

 

If you using POST method then

Data you can pass using const  

 const data = {
                orderID: this.order.orderNumber,
                emailID:this.order.orderCustomer.email,
              }

return this.pluginService.httpClient
                .post(’/swag/returnlabel’,data,{headers})
                .then((response) => {
                    if (response.data.type == ‚error‘)
                    {
                     this.createNotificationError({
                        title: response.data.type,
                        message: response.data.message
                      });
                        return;
                    }
                   
                      this.createNotificationError({
                        title: response.data.type,
                        message: response.data.message
                      });
     
                    
                   

                }).catch(error => {

                });