RicoSuter/NSwag

Angular TS client Accept header is "text/plain" when using OAS3

Open

#2672 opened on Feb 4, 2020

View on GitHub
 (3 comments) (0 reactions) (0 assignees)C# (6,291 stars) (1,189 forks)batch import
help wantedtype: bugtype: enhancement

Description

We use NSwag Studio to generate TypeScript clients for our Angular applications. When we switch from Swagger2 to OAS3 the generated Angular client uses a different Accept header.

Output from Swagger2 definition ("Accept": "application/json"):

let options_ : any = {
  observe: "response",
  responseType: "blob",
  headers: new HttpHeaders({
    "Accept": "application/json"
  })
};

Output from OAS3 definition ("Accept": "text/plain"):

let options_ : any = {
  observe: "response",
  responseType: "blob",
  headers: new HttpHeaders({
    "Accept": "text/plain"
  })
};

The related part of the definition looks of course a bit different, but I don't see a reason why it results in different output. Swagger2:

  "produces": [
      "text/plain",
      "application/json",
      "text/json"
  ],

OAS3:

  "content": {
    "text/plain": {
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Supplier"
        }
      }
    },
    "application/json": {
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Supplier"
        }
      }
    },
    "text/json": {
      "schema": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/Supplier"
        }
      }
    }
  }

As far as I understand the ASP.NET Core documentation, the Accept header is ignored if the request comes from a browser. Are there any other side-effects? Is there a way to configure which Accept header should be used?

Contributor guide