You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ambari.apache.org by "Sean Roberts (JIRA)" <ji...@apache.org> on 2018/06/18 15:43:00 UTC

[jira] [Updated] (AMBARI-9016) API not taking or responding with application/json

     [ https://issues.apache.org/jira/browse/AMBARI-9016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sean Roberts updated AMBARI-9016:
---------------------------------
    Description: 
Ambari responds with a "Content-Type"="text/plain" when the content is actually JSON.

Also, API does not accept the "Content-Type"="application/json" even though it expects the content of the PUT/POSTS to be JSON.

This breaks most any http library or application, including Knox.

The API does not accept JSON and when it responds with JSON it says it's "text/plain":
{code}
$ curl -v -u admin\
  -H "Content-Type: application/json" -H x-requested-by:useless \
  http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d @temp.json

< HTTP/1.1 500 Server Error
< Content-Type: text/plain; charset=ISO-8859-1
{
  "status": 500,
  "message": "Server Error"
}
{code}

Meanwhile it accepts JSON as text/plain and still responds with "text/plain" even though it is sending JSON:

{code}
$ curl -v -u admin\
  -H "Content-Type: test/plain" -H x-requested-by:useless \
  http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d @temp.json

> POST /api/v1/stacks/HDP/versions/2.4/recommendations HTTP/1.1
> Content-Type: test/plain
< HTTP/1.1 200 OK
< Content-Type: text/plain
{
  "resources" : [
    {
      "href" : "http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations/8",
... snipped the rest of the JSON since it's not needed ...
{code}

This is the file that was sent:
{code}
$ cat temp.json
    {
      "recommend" : "configurations",
      "services" : [ "AMBARI_METRICS","HDFS","HIVE","MAPREDUCE2","PIG","TEZ","YARN","ZOOKEEPER" ],
      "hosts" : [ "ip-10-0-1-159.ec2.internal","ip-10-0-1-31.ec2.internal","ip-10-0-1-32.ec2.internal","ip-10-0-1-33.ec2.internal" ]
    }
{code}

  was:
The  stack advisor API does not accept application/json even though it expects JSON files.
And it responds with "text/plain" even though the content it is sending is JSON.

This breaks most any http library or application. Such as those made to work with RESTful APIs.

The API does not accept JSON and when it responds with JSON it says it's "text/plain":
{code}
$ curl -v -u admin\
  -H "Content-Type: application/json" -H x-requested-by:useless \
  http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d @temp.json

< HTTP/1.1 500 Server Error
< Content-Type: text/plain; charset=ISO-8859-1
{
  "status": 500,
  "message": "Server Error"
}
{code}

Meanwhile it accepts JSON as text/plain and still responds with "text/plain" even though it is sending JSON:

{code}
$ curl -v -u admin\
  -H "Content-Type: test/plain" -H x-requested-by:useless \
  http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d @temp.json

> POST /api/v1/stacks/HDP/versions/2.4/recommendations HTTP/1.1
> Content-Type: test/plain
< HTTP/1.1 200 OK
< Content-Type: text/plain
{
  "resources" : [
    {
      "href" : "http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations/8",
... snipped the rest of the JSON since it's not needed ...
{code}

This is the file that was sent:
{code}
$ cat temp.json
    {
      "recommend" : "configurations",
      "services" : [ "AMBARI_METRICS","HDFS","HIVE","MAPREDUCE2","PIG","TEZ","YARN","ZOOKEEPER" ],
      "hosts" : [ "ip-10-0-1-159.ec2.internal","ip-10-0-1-31.ec2.internal","ip-10-0-1-32.ec2.internal","ip-10-0-1-33.ec2.internal" ]
    }
{code}


> API not taking or responding with application/json
> --------------------------------------------------
>
>                 Key: AMBARI-9016
>                 URL: https://issues.apache.org/jira/browse/AMBARI-9016
>             Project: Ambari
>          Issue Type: Bug
>          Components: ambari-server
>    Affects Versions: 1.7.0
>            Reporter: Sean Roberts
>            Priority: Minor
>              Labels: newbie
>
> Ambari responds with a "Content-Type"="text/plain" when the content is actually JSON.
> Also, API does not accept the "Content-Type"="application/json" even though it expects the content of the PUT/POSTS to be JSON.
> This breaks most any http library or application, including Knox.
> The API does not accept JSON and when it responds with JSON it says it's "text/plain":
> {code}
> $ curl -v -u admin\
>   -H "Content-Type: application/json" -H x-requested-by:useless \
>   http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d @temp.json
> < HTTP/1.1 500 Server Error
> < Content-Type: text/plain; charset=ISO-8859-1
> {
>   "status": 500,
>   "message": "Server Error"
> }
> {code}
> Meanwhile it accepts JSON as text/plain and still responds with "text/plain" even though it is sending JSON:
> {code}
> $ curl -v -u admin\
>   -H "Content-Type: test/plain" -H x-requested-by:useless \
>   http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations -d @temp.json
> > POST /api/v1/stacks/HDP/versions/2.4/recommendations HTTP/1.1
> > Content-Type: test/plain
> < HTTP/1.1 200 OK
> < Content-Type: text/plain
> {
>   "resources" : [
>     {
>       "href" : "http://localhost:8080/api/v1/stacks/HDP/versions/2.4/recommendations/8",
> ... snipped the rest of the JSON since it's not needed ...
> {code}
> This is the file that was sent:
> {code}
> $ cat temp.json
>     {
>       "recommend" : "configurations",
>       "services" : [ "AMBARI_METRICS","HDFS","HIVE","MAPREDUCE2","PIG","TEZ","YARN","ZOOKEEPER" ],
>       "hosts" : [ "ip-10-0-1-159.ec2.internal","ip-10-0-1-31.ec2.internal","ip-10-0-1-32.ec2.internal","ip-10-0-1-33.ec2.internal" ]
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)