如何将不同的类型发布到同一集合

时间:2019-03-13 14:09:48

标签: .net asp.net-web-api-routing

说我有一个要点集合:GET /points。点数据在体内发送(在现实生活中,这不是点,而是很大的东西,超过100 KB)。

一个点可以定义为一个JSON(例如{ "x": "0", "y": "1" }和一个二进制数据(例如00 00 00 00 01 00 00 00),但是它们本质上都定义了相同的东西,最终存储在同一存储中,并且可以以相同的格式退役。

定义POST API有哪些选择?

  1. 我可以定义两个不同的端点:/points/json/points/bin。分离的端点可以获得良好的Swagger文档(它们对主体数据的描述不同),但是它们看起来与GET API不同:
GET /points
GET /points/{id}
DELETE /points/{id}
POST /points/json
POST /points/bin
  1. 我可以定义相同的端点并通过查询参数/points?type=json/points?type=bin进行区分。看起来更好,但是我很难正确地指定路由并记录此端点。

你们对这个问题有任何看法吗?

已更新

  1. 我偶然发现了另一种可能性-使用Content-Type标头。这将保留相同的URL,因此听起来很合理。但是Swashbuckle / Swagger文档又如何呢?如何告诉它生成基于Content-Type标头值的文档?

0 个答案:

没有答案