我正在为几个不同的 3rd 方 API 创建一个包装器,以有效地公开一个 Web API
所以我的 API 会有类似的东西:
GET http://myapi.com/cars/1
回复:
{
"name": "DB9",
"make": "Aston Martin",
"speed": 123
}
但这实际上会在内部调用
GET http://astonmartinapi.com/db/9
回复:
{
"speed": 123
}
然后调用/cars/2
将响应{ "name": "mondeo", "make": "Ford", "speed": 34 }
which 将在内部调用GET http://fordapi.com/vehicles/mondeo
。
如何实施从我网站上的不同实体到这些第三方网站的地图?
我的一个想法是创建一个映射器:
public JsonResult Get(int id = 0)
{
var car = db.Cars.Find(id);
// check not null, etc
switch (car.Make.Id) // refactor into method
{
case 1:
// query astonmartinapi
break;
case 2:
// query fordapi
break;
}
// return stuff
}
但这意味着硬编码的东西不好。
有更好的想法吗?