Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP POST/PUT params #3

Closed
ami7ava opened this issue Aug 5, 2011 · 21 comments
Closed

HTTP POST/PUT params #3

ami7ava opened this issue Aug 5, 2011 · 21 comments

Comments

@ami7ava
Copy link

ami7ava commented Aug 5, 2011

Is there any way parameters can be passed in the request body rather than the url for POST/PUT methods? Currently all params are sent via the url, even for POST/PUT.

@mansilladev
Copy link
Contributor

In your use case, is your param list that you're POSTing in the request body live inside of a container? (e.g. JSON, JSON-RPC, etc.)

@mansilladev
Copy link
Contributor

Damn that "Comment & Close" button. :)

@ami7ava
Copy link
Author

ami7ava commented Aug 6, 2011

The API (is a rails app) I was trying to use requires the following json as the request body -

{
   "post":{
      "title":"foo",
      "body":"bar"
   }
}

I tried to setup the parameters as -

   "parameters":[
      {
         "Name":"post[title]",
         "Required":"Y",
         "Default":"",
         "Type":"string",
         "Description":"Title"
      },
      {
         "Name":"post[body]",
         "Required":"Y",
         "Default":"",
         "Type":"string",
         "Description":"Body"
      }
   ]

and this is what I have noticed in the debug output -

{ httpMethod: 'POST',
  oauth: '',
  methodUri: '/posts.json',
  params: { post: { 'title]': 'foo', 'body]': 'bar' } },
  apiKey: '',
  apiSecret: 'undefined',
  apiName: 'SomeAPI' }
Unsecured Call
{ headers: { 'Content-Length': 0 },
  protocol: 'http',
  host: 'example.com',
  method: 'POST',
  path: '/posts.json?post=' }
  1. It tries to send the params in the url
  2. The format of the param names are not correct. Both title and body ends with a closing square bracket.

@kmayoral
Copy link

kmayoral commented Aug 8, 2011

I get a similar issue when I try to access calls using the API tester for POST functions. PHP (well at least my version of 5.3) doesn't populate the global $_POST array with the parameters passed in the URL even though the HTTP method is POST. I have to resort to using $_GET or $_REQUEST arrays to make it work with the API tester. Perhaps if params were sent in the request body as abasak requests, this issue would be fixed as well.

@adrianmott
Copy link

I'd love to see this as well. I'm trying to setup a PUT method with our API and we require the updated fields to be in a JSON object in the request body (not as parameters in the URL).

Any update on this?

@ezarko
Copy link

ezarko commented Aug 24, 2011

I ran into the same issue, plus some others involving port numbers, https and API keys ... all when not using OAuth. Fixed in ezarko@35b3994. Pull request sent.

@ppalavilli
Copy link

has this been committed into the master ? looks like not.

@Allblues
Copy link

Is there a resolution to this issue? Can someone provide an example of how to include a param list in JSON in the request body of a POST?

@martintajur
Copy link
Contributor

I've just recently worked on this and thought about sharing the work I did.

I've created a pull request with a patch that would use the HTTP request body instead of GET parameters when the request method is either POST, PUT or DELETE.

The pull request is here: #33

@Allblues
Copy link

Allblues commented Jul 2, 2012

Thanks for the update Martin.

  • Mike Peterson

-----Original Message-----
From: Martin Tajur
[mailto:reply@reply.github.com]
Sent: Thursday, June 28, 2012 5:26 AM
To: Allblues
Subject: Re: [iodocs] HTTP POST/PUT params (#3)

I've just recently worked on this and thought about sharing the work I did.

I've created a pull request with a patch that would use the HTTP request
body instead of GET parameters when the request method is either POST, PUT
or DELETE.

The pull request is here: #33


Reply to this email directly or view it on GitHub:
#3 (comment)


No virus found in this message.
Checked by AVG - www.avg.com
Version: 2012.0.2180 / Virus Database: 2437/5104 - Release Date: 07/01/12

@ccervon
Copy link

ccervon commented Dec 15, 2012

I just started using iodocs and so far I'm loving it. The only issue I have is that I have a few POST methods that require body parameters AND they can be used with a few query parameters as well.
Is there a way to indicate which parameter goes in the body and which one goes in the query url?

@sqmk
Copy link
Contributor

sqmk commented Feb 8, 2013

Interesting. I may take a look to see if a new option makes sense per parameter.

@ghost
Copy link

ghost commented Feb 15, 2013

Can someone confirm if there is any way to put parameters in POST body.
@ccervon : Did you find any solution?

@aikalima
Copy link

This seems to be working now, tested PUTs only. Example config:

{
                 "MethodName":"Update user",
                 "Synopsis":"Updates user with data supplied in request body",
                 "HTTPMethod":"PUT",
                 "URI":"/users/",
                 "RequiresOAuth":"N",
                 "parameters":[
                     {
                         "Name":"_id",
                         "Required":"Y",
                         "Default":"",
                         "Type":"string",
                         "Description":"user id"
                     },
                     {
                         "Name":"email",
                         "Required":"N",
                         "Default":"",
                         "Type":"string",
                         "Description":"email address"
                     }
                 ]
             }

Sends request BODY as:
{"_id":"51256ef66b1acdb6e5000002","email":"ww@ff.com"}

@ccervon
Copy link

ccervon commented Mar 13, 2013

Adding parameters in POST body works fine.

@Sidwick
Copy link

Sidwick commented Mar 13, 2013

@ccervon, Can you proved the Json of a post using body you are confirming?

{
    "MethodName": "addfacebookconnection",
    "Synopsis": "Add a Facebook Connect to the Current Customer Session",
    "HTTPMethod": "POST",
    "URI": "/visitor/addfacebookconnection",
    "RequiresOAuth": "N",
    "parameters": [
        {
            "Name":"Payload",
             "Required":"Y",
             "Default":"",
             "Type":"string",
             "Description":"user id"
        }
    ]
}               

Does not work

@vky
Copy link
Contributor

vky commented Mar 14, 2013

You can check out the fork that I've been working on with @dgc-wh, https://github.com/vkorapaty/iodocs (check the 'example' branch, or can check out the live example here: http://iodocs.vky.me/whitehat). PUT and POST methods can have a request body in addition to query parameters.

I believe Issue #66 is also working on this.

@Sidwick
Copy link

Sidwick commented Mar 14, 2013

@vkorapaty, @dgc-wh

beautiful work.

@palanik
Copy link

palanik commented Mar 27, 2013

@vkorapaty, @dgc-wh
ditto.

@divyakumbukkal
Copy link

@vkorapaty
I tried pulling out the latest iodocs from https://github.com/mashery/iodocs but the POST with request body does not seem to be working. I pulled out the latest from your branch too but nothing is working. Could you help?

@alexadkins
Copy link
Contributor

Closed by commit 8ff62fc

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests