Passing request as is from a service to another












1















I am having the following scenario:




  1. i have a Loopback service (Core) that has a remote method POST /Core/{id}/upload (accessible to public)



Core.remoteMethod('upload', {
accepts: [
{
arg: 'id',
type: 'string',
description: 'The Entity instance ID.',
required: true,
http: {source: 'path'}
},
{
arg: 'req',
type: 'object',
required: true,
description: 'The request object.',
http: {source: 'req'}
}
],
returns: {
arg: 'output',
type: '$new_EntityPostResponseProps',
root: true,
description: 'Returns the entity instances that was updated.'
},
description: 'Upload a resource to the specified resource.',
documented: true,
http: {
verb: 'patch',
path: '/:id/upload'
}
});





  1. i have another Loopback service (Entities) that has a remote method
    POST /Entities/{id}/upload (not accessible to public)



Entities.remoteMethod('upload', {
accepts: [
{
arg: 'id',
type: 'string',
description: 'The Entity instance ID.',
required: true,
http: {source: 'path'}
},
{
arg: 'user',
type: 'string',
required: true,
description: 'The User instance ID.',
http: {source: 'query'}
},
{
arg: 'files',
type: 'string',
required: true,
description: 'The request.',
http: {source: 'form'}
}
],
returns: {
arg: 'output',
type: 'Entities',
root: true,
description: 'Returns the entity instance that was updated.'
},
description: 'Update the updated Entity instance.',
documented: true,
http: {
verb: 'patch',
path: '/:id/upload'
}
});





  1. i use loopback-connector-swagger to connect the two services

  2. i use multer to handle multipart/form-data requests


I have the following problem:




  1. i upload a file using the POST /Core/{id}/upload endpoint

  2. the sent file is received on the Core service in the following format:



{ fieldname: 'file', originalname: 'quickstart.mp4', encoding: '7bit',
mimetype: 'video/mp4', buffer: <Buffer 68 65 6c 6c 6f 20 42 6c 6f
62 20 53 44 4b 20 4e 49 43 55 20 56 52 45 41 20 41 73 74 61...>,
size: 29 }





  1. I then do a JSON.stringify(file) and send as a string field through swagger to the Entities service, on the Entities service i do a JSON.parse on the parameter

  2. if the file has 100mb the JSON.stringify crashes the server

  3. there is also a considerate delay between Core and Entities until the file is passed completely


How can i pass the request received by Core, unaltered and unchanged through swagger to the Entities service? (Core should be just a pass-through service, i should not be doing JSON.stringify on file data, i just want to pass it along to the Entities service)



If i can't send the request unaltered i figured that i may send the file data buffer directly to the Entities service, but i did not get it to work, it shows as undefined.



Suggestions and samples are greatly appreciated!



Thanks!










share|improve this question



























    1















    I am having the following scenario:




    1. i have a Loopback service (Core) that has a remote method POST /Core/{id}/upload (accessible to public)



    Core.remoteMethod('upload', {
    accepts: [
    {
    arg: 'id',
    type: 'string',
    description: 'The Entity instance ID.',
    required: true,
    http: {source: 'path'}
    },
    {
    arg: 'req',
    type: 'object',
    required: true,
    description: 'The request object.',
    http: {source: 'req'}
    }
    ],
    returns: {
    arg: 'output',
    type: '$new_EntityPostResponseProps',
    root: true,
    description: 'Returns the entity instances that was updated.'
    },
    description: 'Upload a resource to the specified resource.',
    documented: true,
    http: {
    verb: 'patch',
    path: '/:id/upload'
    }
    });





    1. i have another Loopback service (Entities) that has a remote method
      POST /Entities/{id}/upload (not accessible to public)



    Entities.remoteMethod('upload', {
    accepts: [
    {
    arg: 'id',
    type: 'string',
    description: 'The Entity instance ID.',
    required: true,
    http: {source: 'path'}
    },
    {
    arg: 'user',
    type: 'string',
    required: true,
    description: 'The User instance ID.',
    http: {source: 'query'}
    },
    {
    arg: 'files',
    type: 'string',
    required: true,
    description: 'The request.',
    http: {source: 'form'}
    }
    ],
    returns: {
    arg: 'output',
    type: 'Entities',
    root: true,
    description: 'Returns the entity instance that was updated.'
    },
    description: 'Update the updated Entity instance.',
    documented: true,
    http: {
    verb: 'patch',
    path: '/:id/upload'
    }
    });





    1. i use loopback-connector-swagger to connect the two services

    2. i use multer to handle multipart/form-data requests


    I have the following problem:




    1. i upload a file using the POST /Core/{id}/upload endpoint

    2. the sent file is received on the Core service in the following format:



    { fieldname: 'file', originalname: 'quickstart.mp4', encoding: '7bit',
    mimetype: 'video/mp4', buffer: <Buffer 68 65 6c 6c 6f 20 42 6c 6f
    62 20 53 44 4b 20 4e 49 43 55 20 56 52 45 41 20 41 73 74 61...>,
    size: 29 }





    1. I then do a JSON.stringify(file) and send as a string field through swagger to the Entities service, on the Entities service i do a JSON.parse on the parameter

    2. if the file has 100mb the JSON.stringify crashes the server

    3. there is also a considerate delay between Core and Entities until the file is passed completely


    How can i pass the request received by Core, unaltered and unchanged through swagger to the Entities service? (Core should be just a pass-through service, i should not be doing JSON.stringify on file data, i just want to pass it along to the Entities service)



    If i can't send the request unaltered i figured that i may send the file data buffer directly to the Entities service, but i did not get it to work, it shows as undefined.



    Suggestions and samples are greatly appreciated!



    Thanks!










    share|improve this question

























      1












      1








      1








      I am having the following scenario:




      1. i have a Loopback service (Core) that has a remote method POST /Core/{id}/upload (accessible to public)



      Core.remoteMethod('upload', {
      accepts: [
      {
      arg: 'id',
      type: 'string',
      description: 'The Entity instance ID.',
      required: true,
      http: {source: 'path'}
      },
      {
      arg: 'req',
      type: 'object',
      required: true,
      description: 'The request object.',
      http: {source: 'req'}
      }
      ],
      returns: {
      arg: 'output',
      type: '$new_EntityPostResponseProps',
      root: true,
      description: 'Returns the entity instances that was updated.'
      },
      description: 'Upload a resource to the specified resource.',
      documented: true,
      http: {
      verb: 'patch',
      path: '/:id/upload'
      }
      });





      1. i have another Loopback service (Entities) that has a remote method
        POST /Entities/{id}/upload (not accessible to public)



      Entities.remoteMethod('upload', {
      accepts: [
      {
      arg: 'id',
      type: 'string',
      description: 'The Entity instance ID.',
      required: true,
      http: {source: 'path'}
      },
      {
      arg: 'user',
      type: 'string',
      required: true,
      description: 'The User instance ID.',
      http: {source: 'query'}
      },
      {
      arg: 'files',
      type: 'string',
      required: true,
      description: 'The request.',
      http: {source: 'form'}
      }
      ],
      returns: {
      arg: 'output',
      type: 'Entities',
      root: true,
      description: 'Returns the entity instance that was updated.'
      },
      description: 'Update the updated Entity instance.',
      documented: true,
      http: {
      verb: 'patch',
      path: '/:id/upload'
      }
      });





      1. i use loopback-connector-swagger to connect the two services

      2. i use multer to handle multipart/form-data requests


      I have the following problem:




      1. i upload a file using the POST /Core/{id}/upload endpoint

      2. the sent file is received on the Core service in the following format:



      { fieldname: 'file', originalname: 'quickstart.mp4', encoding: '7bit',
      mimetype: 'video/mp4', buffer: <Buffer 68 65 6c 6c 6f 20 42 6c 6f
      62 20 53 44 4b 20 4e 49 43 55 20 56 52 45 41 20 41 73 74 61...>,
      size: 29 }





      1. I then do a JSON.stringify(file) and send as a string field through swagger to the Entities service, on the Entities service i do a JSON.parse on the parameter

      2. if the file has 100mb the JSON.stringify crashes the server

      3. there is also a considerate delay between Core and Entities until the file is passed completely


      How can i pass the request received by Core, unaltered and unchanged through swagger to the Entities service? (Core should be just a pass-through service, i should not be doing JSON.stringify on file data, i just want to pass it along to the Entities service)



      If i can't send the request unaltered i figured that i may send the file data buffer directly to the Entities service, but i did not get it to work, it shows as undefined.



      Suggestions and samples are greatly appreciated!



      Thanks!










      share|improve this question














      I am having the following scenario:




      1. i have a Loopback service (Core) that has a remote method POST /Core/{id}/upload (accessible to public)



      Core.remoteMethod('upload', {
      accepts: [
      {
      arg: 'id',
      type: 'string',
      description: 'The Entity instance ID.',
      required: true,
      http: {source: 'path'}
      },
      {
      arg: 'req',
      type: 'object',
      required: true,
      description: 'The request object.',
      http: {source: 'req'}
      }
      ],
      returns: {
      arg: 'output',
      type: '$new_EntityPostResponseProps',
      root: true,
      description: 'Returns the entity instances that was updated.'
      },
      description: 'Upload a resource to the specified resource.',
      documented: true,
      http: {
      verb: 'patch',
      path: '/:id/upload'
      }
      });





      1. i have another Loopback service (Entities) that has a remote method
        POST /Entities/{id}/upload (not accessible to public)



      Entities.remoteMethod('upload', {
      accepts: [
      {
      arg: 'id',
      type: 'string',
      description: 'The Entity instance ID.',
      required: true,
      http: {source: 'path'}
      },
      {
      arg: 'user',
      type: 'string',
      required: true,
      description: 'The User instance ID.',
      http: {source: 'query'}
      },
      {
      arg: 'files',
      type: 'string',
      required: true,
      description: 'The request.',
      http: {source: 'form'}
      }
      ],
      returns: {
      arg: 'output',
      type: 'Entities',
      root: true,
      description: 'Returns the entity instance that was updated.'
      },
      description: 'Update the updated Entity instance.',
      documented: true,
      http: {
      verb: 'patch',
      path: '/:id/upload'
      }
      });





      1. i use loopback-connector-swagger to connect the two services

      2. i use multer to handle multipart/form-data requests


      I have the following problem:




      1. i upload a file using the POST /Core/{id}/upload endpoint

      2. the sent file is received on the Core service in the following format:



      { fieldname: 'file', originalname: 'quickstart.mp4', encoding: '7bit',
      mimetype: 'video/mp4', buffer: <Buffer 68 65 6c 6c 6f 20 42 6c 6f
      62 20 53 44 4b 20 4e 49 43 55 20 56 52 45 41 20 41 73 74 61...>,
      size: 29 }





      1. I then do a JSON.stringify(file) and send as a string field through swagger to the Entities service, on the Entities service i do a JSON.parse on the parameter

      2. if the file has 100mb the JSON.stringify crashes the server

      3. there is also a considerate delay between Core and Entities until the file is passed completely


      How can i pass the request received by Core, unaltered and unchanged through swagger to the Entities service? (Core should be just a pass-through service, i should not be doing JSON.stringify on file data, i just want to pass it along to the Entities service)



      If i can't send the request unaltered i figured that i may send the file data buffer directly to the Entities service, but i did not get it to work, it shows as undefined.



      Suggestions and samples are greatly appreciated!



      Thanks!







      node.js swagger loopbackjs multer






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 21 '18 at 18:02









      BogdanBogdan

      97110




      97110
























          0






          active

          oldest

          votes











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53418076%2fpassing-request-as-is-from-a-service-to-another%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes
















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53418076%2fpassing-request-as-is-from-a-service-to-another%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Wiesbaden

          Marschland

          Dieringhausen