RicoSuter/NSwag

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

Open

#2.672 aberto em 4 de fev. de 2020

Ver no GitHub
 (3 comments) (0 reactions) (0 assignees)C# (1.189 forks)batch import
help wantedtype: bugtype: enhancement

Métricas do repositório

Stars
 (6.291 stars)
Métricas de merge de PR
 (Nenhuma PRs mesclada em 30d)

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?

Guia do colaborador