Passing request as is from a service to another
I am having the following scenario:
- 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'
}
});
- 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'
}
});
- i use loopback-connector-swagger to connect the two services
- i use multer to handle multipart/form-data requests
I have the following problem:
- i upload a file using the POST /Core/{id}/upload endpoint
- 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 }
- 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
- if the file has 100mb the JSON.stringify crashes the server
- 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
add a comment |
I am having the following scenario:
- 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'
}
});
- 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'
}
});
- i use loopback-connector-swagger to connect the two services
- i use multer to handle multipart/form-data requests
I have the following problem:
- i upload a file using the POST /Core/{id}/upload endpoint
- 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 }
- 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
- if the file has 100mb the JSON.stringify crashes the server
- 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
add a comment |
I am having the following scenario:
- 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'
}
});
- 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'
}
});
- i use loopback-connector-swagger to connect the two services
- i use multer to handle multipart/form-data requests
I have the following problem:
- i upload a file using the POST /Core/{id}/upload endpoint
- 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 }
- 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
- if the file has 100mb the JSON.stringify crashes the server
- 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
I am having the following scenario:
- 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'
}
});
- 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'
}
});
- i use loopback-connector-swagger to connect the two services
- i use multer to handle multipart/form-data requests
I have the following problem:
- i upload a file using the POST /Core/{id}/upload endpoint
- 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 }
- 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
- if the file has 100mb the JSON.stringify crashes the server
- 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
node.js swagger loopbackjs multer
asked Nov 21 '18 at 18:02
BogdanBogdan
97110
97110
add a comment |
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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