RicoSuter/NSwag

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

Open

#2,672 建立於 2020年2月4日

在 GitHub 查看
 (3 留言) (0 反應) (0 負責人)C# (6,291 star) (1,189 fork)batch import
help wantedtype: bugtype: enhancement

描述

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?

貢獻者指南