我正在从API调用返回一个数组。数组看起来像这样https://i.imgur.com/Rq8GfBI.png。
我得到了数组,然后使用此
调用我的控制器方法this.http.post<Maps[]>(this.baseUrl + "api/Map/InsertMap/", beatmaps[0]).subscribe();
Maps
是界面
interface Maps {
Id: number;
Name: string;
Artist: string;
Creator: string;
}
现在我只有一个基本的插入控制器方法
[Route("api/[controller]/InsertMap/")]
[HttpPost("[action]")]
public async Task<IActionResult> AsyncCreateMap(MapModel model)
{
await _mapService.AsyncInsert(model);
return Ok();
}
它将模型作为参数,然后使用实体框架将其插入。没用我不知道如何将获得的数组实际转移到可以在控制器中使用的对象。
这是我的整个控制器课
[Route("api/[controller]")]
public class MapController : Controller
{
private readonly MapService _mapService;
public MapController(MapService mapService)
{
_mapService = mapService;
}
[Route("api/[controller]/Maps")]
[HttpGet("[action]")]
public async Task<IActionResult> AsyncMaps()
{
var data = await _mapService.AsyncGetMaps(0, 10);
return Ok(data);
}
[HttpPost]
public async Task<IActionResult> AsyncCreateMap([FromBody]MapModel model)
{
await _mapService.AsyncInsert(model);
return Ok();
}
}
答案 0 :(得分:1)
您应该尝试使用[FromBody]。
示例:
public class ModelDTO
{
public string Id{get; set;}
public List<string> Childs {get; set;}
}
[HttpPost]
[Route("api/nice/Save")]
public bool Save([FromBody] ModelDTO model)
{ ...
在有角度的一面,您应该使用httpClient.post ..
save(data: IData): Observable<ISaveCompleted> {
const options = this.createPostOptions();
const saveCompleted = this.http
.post(options.url, data, options)
.map((res: Response) => <ISaveCompleted>res.json());
return saveCompleted;
}