mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-23 05:50:55 +01:00
Raise warning when accidentally submitting Conduit parameters as a JSON-encoded body
Summary: See T12447 for discussion. It is reasonably intuitive to try and pass Conduit parameters via a JSON-encoded HTTP body, but if you do so, you'll get an unhelpful messsage about how method so-and-so does not accept a parameter named "your_entire_json_body". Instead, detect this mistake and advise developers to use form-encoded parameters. Test Plan: Got a better error when attempting to make Conduit calls from React code. Tested the following additional invocations of Conduit and got the expected results without an error: * From the Conduit UI * With cURL: ``` ~ $ curl http://local.phacility.com:8080/api/conpherence.querythread \ > -d api.token=api-tvv2zb565zrtueab5ddprmpxvrwb \ > -d ids[0]=1 ``` * With `arc call-conduit`: ``` ~ $ echo '{ > "ids": [ > 1 > ] > }' | arc call-conduit --conduit-uri http://local.phacility.com:8080/ --conduit-token api-tvv2zb565zrtueab5ddprmpxvrwb conpherence.querythread ``` Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D19944
This commit is contained in:
parent
ea8be11add
commit
05a9474138
1 changed files with 9 additions and 0 deletions
|
@ -605,6 +605,15 @@ final class PhabricatorConduitAPIController
|
|||
AphrontRequest $request,
|
||||
$method) {
|
||||
|
||||
$content_type = $request->getHTTPHeader('Content-Type');
|
||||
|
||||
if ($content_type == 'application/json') {
|
||||
throw new Exception(
|
||||
pht('Use form-encoded data to submit parameters to Conduit endpoints. '.
|
||||
'Sending a JSON-encoded body and setting \'Content-Type\': '.
|
||||
'\'application/json\' is not currently supported.'));
|
||||
}
|
||||
|
||||
// Look for parameters from the Conduit API Console, which are encoded
|
||||
// as HTTP POST parameters in an array, e.g.:
|
||||
//
|
||||
|
|
Loading…
Reference in a new issue