Comments (3)
Hi Frank,
How much control do you have over the client sending the data? It seems to me that alternative formats might be a better fit for this structure of data. I'm thinking for instance that you could pass in JSON a la endpoint?data="[{a:1, b:2}, {a:3, b:4}]
and parse the data frame out in that way.
I'm pushing back just because any time I've had to work with repeated query string parameters in any programming language/framework, it's always felt cludgy. So that idea makes me a little reserved about diving in to support the feature (though of course you can do whatever you want in your fork!).
I don't see any obvious problems with the method you proposed, nor am I sure why you'd be getting those errors, but I'm not totally surprised that it didn't work. I can imagine that some list of arguments to pass in is being indexed by parameter name, so as it encounters multiple parameters with the same name some get dropped or something.
from plumber.
Hi,
Thanks for the quick reply.
Actually I ended up being able to fix it. The issue was curl being unhappy with newline characters in the data argument. If you do the curl command with a file input instead:
curl --data "`cat test_file`"
or
curl --data-binary @test_file
then it seems to work as expected. A side benefit is that passing in just one row still works!
I've considered doing it the way you are suggesting as well and then unwrapping it within the function itself and I may end up going that route in the future. Is there anywhere you can point me to to learn more about the JSON input format you're suggesting? I'm only used to interfacing with plumber using --data "a=1&b=2...".
from plumber.
I don't have a formal reference on the topic, but you could look at serializing with jsonlite::toJSON()
and within your plumber function deserializing using jsonlite::fromJSON()
. In that case, the variable you're trying to parse is just a string.
That format seems a little more typical, at least from what I've seen, but I don't know that there are any compelling reasons to prefer it over your approach.
from plumber.
Related Issues (20)
- A love letter to Plumber ... and a request to find out more about its roadmap moving fowards. HOT 4
- Serializer for multipart/form-data HOT 3
- Make defaultErrorHandler more verbose in the Connect application logs HOT 8
- "Plumber Server" section in Tips & Tricks article HOT 2
- R process not releasing memory; Want aggressive garbage collection HOT 1
- Set plumber options through env HOT 3
- Default `path` value in `session_cookie()`
- set parser failed with attempt to apply non-function
- Plumber is not releasing memory HOT 11
- How to add operationId in Plumber? HOT 3
- how to redirect to /docs/ not the /__docs__/?
- Parse rds could avoid hitting disk
- Endpoint with octet serializer which receives a file in the request freezes whole Plumber.R execution
- Swagger is locked when using the `checkAuth` filter example from docs
- New hook after route has been found but before it's been evaluated HOT 1
- npm package should be switched from `@apidevtools/swagger-cli` to `@redocly/cli`
- Json and csv serializers generate error with large amounts of data HOT 1
- fix request object table layout in routing vignette
- Support mounting using `pr_mount()` without a trailing slash
- `pr_set_error()` doesn't apply to endpoints defined inside `pr_mount()`
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from plumber.